home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / cli / okami15.lzh / OKAMI15 / DOC / COMMANDS.DOC < prev    next >
Encoding:
Text File  |  1992-09-20  |  187.8 KB  |  5,147 lines

  1.     ===============================================
  2.  
  3. @(#)      OKAMI SHELL VERSION 1.4 - KOMMANDO-REFERENZ
  4.  
  5.     ===============================================
  6.             Stand: 19.9.1992
  7.  
  8.  
  9.     BITTE ERST DIE DATEIEN README UND OKAMI.DOC LESEN!
  10.  
  11.  
  12.  
  13. Dies ist eine Referenzdatei, die man sich einmal kurz durchlesen sollte,
  14. um zu sehen, was die Shell alles zu bieten hat. Die einzelnen Abschnitte
  15. können während der Arbeit mit der Shell durch Druck auf die Help-Taste
  16. angesehen werden. Dazu muß der Dateiname dieser Datei in der Shellvariablen
  17. HELPFILE gespeichert sein.
  18.  
  19. Zu jedem Kommando wird die Syntax des Kommandos sowie, falls vorhanden, die
  20. zum Laufen des Kommandos notwendigen Dateien angegeben.
  21. Für die Syntaxschreibweise gilt:
  22.     Angaben in [] (eckigen Klammern) koennen, muessen aber nicht
  23.     angegeben sein.
  24.     Angaben in {} (geschwungenen Klammern) koennen beliebig oft
  25.     (auch null mal) angegeben sein.
  26.     Von durch | (senkrechten Strich) getrennten Angaben wird
  27.     jeweils eine erwartet.
  28. Numerische Werte koennen in folgender Form angegeben werden:
  29.     1234        entspricht der dezimalen Zahl 1234
  30.     01234        entspricht der oktalen Zahl 1234 (=668 dezimal)
  31.     0x1234        entspricht der Hex-Zahl 1234 (=4660 dezimal)
  32.     %1011        entspricht der Binärzahl 1011 (=11 dezimal)
  33.     !A        entspricht dem Ascii-Code von A (=65 dezimal)
  34. Vor jedem dieser Formate kann ein Minuszeichen stehen, um eine negative Zahl
  35. anzuzeigen. ACHTUNG: Bei Kommandos, die Flags benutzen, wird dieses Minus-
  36. zeichen als Einleitung der Flags und daher die folgende Zahl als die Flags
  37. angesehen, was normalerweise in einem Syntaxfehler endet. Daher muß in sol-
  38. chen Fällen die Zahl in (einfache oder doppelte) Anführungszeichen gesetzt
  39. werden.
  40.  
  41. Steuersequenzen, z.B. VT52-Codes, können mit dem Fluchtsymbol ^ (Dach)
  42. benutzt werden. Die Verwendung des Fluchtsymbols ist unter dem internen
  43. Kommando "echo" beschrieben. Das dort gesagte gilt auch für alle anderen
  44. Kommandos.
  45.  
  46. Flags können einzeln, aber auch in Gruppen durch das jeweilige Kennungs-
  47. zeichen eingeleitet werden, z.B. sind äquivalent:
  48.     wc -lcn
  49. und    wc -l -c -n
  50.  
  51. Dies gilt nicht, wenn die Flags aus mehr als einem Zeichen bestehen oder
  52. wenn zusätzliche Informationen angegeben werden, wie z.B. bei format oder
  53. rsconf. Außerdem erlauben einige Kommandos nicht die Zusammenfassung oder
  54. die Einzelschreibweise, dies ist dann jeweils angegeben.
  55.  
  56. Es gibt einige Flags, die sich eingebürgert haben und bei einigen Kommandos
  57. (nicht bei allen) dieselbe Bedeutung haben, diese sind:
  58.  
  59.     -a (alle)        (das Kommando tut etwas für alle in Frage
  60.                  kommenden Argumente. Bsp.: pwd, ls)
  61.     -i (interaktiv)        (das Kommando fragt den Anwender nach
  62.                  gewissen Dingen. Bsp.: rm)
  63.     -l (lang)        (gibt zusätzliche oder ausführlichere Informa-
  64.                  tionen. Bsp.: ls, ver)
  65.     -v (verbose)        (das Kommando sagt, was es tut, Bsp.: format)
  66.     -q (quiet)        (das Kommando erzeugt keine Ausgabe, oder:)
  67.        (query)        (wie -i)
  68.     -f (fast)        (das Kommando umgeht Sicherheitsabfragen u.ä.,
  69.                  um so schnell wie möglich zu laufen. Bsp.:
  70.                  rm, shutdown)
  71.     -r (rekursiv)        (das Kommando läuft rekursiv über den Datei-
  72.                  baum. Bsp: rm)
  73.  
  74. Hinweis: Alle Angaben über Shellscripts (z.B. "Verwendung nur in Shellscripts
  75. erlaubt") gelten ebenso für Shellfunktionen.
  76.  
  77.  
  78. 0) Nicht-dokumentierte Kommandos:
  79.  
  80. Gibt es, na klar. Sie werden hier nicht erklärt, da sie sonst ja nicht mehr
  81. nicht-dokumentiert währen. Mit `cmds' kann man die Namen aller Kommandos heraus-
  82. finden, auch die der nicht-dokumentierten. Man kann sie auch benutzen, aber
  83. man sollte sich nicht darauf verlassen, daß sie in späteren Versionen der
  84. Shell noch genauso wie in der jetzigen funktionieren oder überhaupt noch vor-
  85. handen sind.
  86. Wer das Zauberwort findet, hat gewonnen.
  87.  
  88.  
  89. 1) Interne Kommandos:
  90.  
  91. Interne Kommandos werden aufgerufen, indem man am Shell-Prompt den Namen
  92. des Kommandos, gefolgt von den Parametern, eingibt.
  93.  
  94. Rückgabewerte:
  95. Jedes interne Kommando gibt einen numerischen Wert zurück, der sich nach Aus-
  96. führung des Programms in der Shellvariablen "?" befindet. Außerdem wird
  97. der Rückgabewert von den Kommandos if und while benutzt.
  98. Normalerweise geben die Kommandos -1 zurück, wenn ein Syntaxfehler beim
  99. Aufruf oder ein anderer Fehler aufgetreten ist, und 0, wenn bei der Aus-
  100. führung keine Fehler aufgetreten sind. Daher werden die Rückgabewerte der
  101. internen Kommandos im folgenden nur angeführt, wenn sie von dieser Konven-
  102. tion abweichen.
  103.  
  104.  
  105. Folgende interne Kommandos sind implementiert:
  106.  
  107.  
  108. -----
  109. . - Eine Datei als Shellscriptausführen
  110.  
  111. Syntax: . Dateiname
  112.  
  113. Die angegebene Datei wird als Shellscript ausgeführt. Es muß der voll-
  114. ständige Dateiname (relativ oder absolut) angegeben werden. Die Shell-
  115. variablen PATH und SEXT sind ohne Wirkung. Das Script wird immer von
  116. der aktuellen Shell ausgeführt, nicht von einer Subshell, auch wenn
  117. das Shell-Flag -r gesetzt ist.
  118.  
  119. Beispiele:
  120.     . $HOME\profile
  121.         führt das Login-Script aus.
  122.     . hallo.sh
  123.         führt die Datei hallo.sh als Shellscript aus.
  124.     . hallo
  125.         führt die Datei hallo als Shellscript aus.
  126.  
  127. Siehe auch:    set
  128.  
  129. -----
  130. [ - SIEHE test
  131.  
  132. -----
  133. adr - Diverse Systemadressen ausgeben
  134.  
  135. Syntax: adr
  136.  
  137. Ausgabe der folgenen Adressen:
  138.     argv        Adresse des Argumentenvektors der Shell
  139.     Command line    Adresse der Kommandozeile (Parameter)
  140.     Environment    Adresse des Environment-Strings der Shell
  141.     VarTable    Adresse der Variablen-Tabelle der Shell
  142.     Commands    Adresse der Kommandotabelle der Shell
  143.     AdrTab        Adresse der Tabelle mit den auszugebenden Adressen
  144.     Physbase    Adresse des physikalischen Bildschirms
  145.     Logbase     Adresse des logischen Bildschirms
  146.     DTA        Adresse des Disk-Transfer-Bereiches
  147.     Phystop     Physikalisches Ende des RAM-Speichers
  148.             (Adresse des ersten nicht vorhandenen Bytes)
  149.     Membot        Unterste Adresse des verfügbaren Speichers
  150.     Memtop        Oberste Adresse des verfügbaren Speichers
  151.     Basepage    Adresse der Basepage der Shell
  152.     Cookie Jar    Die Adresse des Cookie Jars.
  153.     _StdIn        Adresse der aktuellen Eingabe-File-Struktur.
  154.     _StdOut        Adresse der aktuellen Ausgabe-File-Struktur.
  155.     _StdErr        Adresse der aktuellen Fehlerausgabe-File-Struktur.
  156.     _shell_p    Adresse der Shell-Funktion.
  157.  
  158. Diese Adressen sind z.T. nur für den Programmierer der Shell von Bedeutung
  159. (z.T nicht mal das). Die Inhalte der Adressen können mit memex ausgelesen
  160. werden.
  161.  
  162. Siehe auch:    basep
  163.         cookie
  164.         memex
  165.  
  166. -----
  167. alert - GEM-Alertbox erzeugen
  168.  
  169. Syntax: alert Icon Default Boxtext Buttontext [Var]
  170.  
  171. Dieses Kommando macht die GEM-Alert-Boxen von der Shell aus zugänglich. Da
  172. es sich um ein AES-Feature handelt, kann dieses Kommando nur benutzt werden,
  173. wenn vorher gon aktiviert wurde.
  174. Die Parameter haben folgende Bedeutung:
  175.  
  176.     Icon
  177.         das in der Box anzuzeigende Icon. Zulässige Werte sind die
  178.         Strings "none", "excl", "ques" und "stop" sowie die Zahlen
  179.         0 bis 3.
  180.     Default
  181.         die Nummer des Default-Buttons, also des Buttons, der durch
  182.         Druck auf Return angewählt werden kann. Zulässige Werte sind
  183.         1 für den linken, 2 für den mittleren und 3 für den rechten
  184.         Button.
  185.     Boxtext
  186.         der in der Box anzuzeigende Text. Muß in Anführungszeichen
  187.         eingeschlossen sein, wenn er Leerzeichen enthält. Die Zeilen
  188.         müssen durch ^| getrennt sein. (Nur | genügt nicht, wirkt
  189.         als Pipe.)
  190.     Buttontext
  191.         analog dazu die in den Buttons anzuzeigenden Texte, getrennt
  192.         durch ^|.
  193.     Var
  194.         ein beliebiger Variablenname für das Ergebnis.
  195.  
  196. Das Ergebnis der Auswahl, also die Nummer des angwewählten Buttons,  wird als
  197. Rückgabewert des Kommandos und, falls angegeben, in der Variablen Var zurück-
  198. gegeben. Es steht 1 für den linken, 2 für den mittleren und 3 für den rechten
  199. Button.
  200.  
  201. Beispiele:
  202.  
  203.     Die gleiche Wirkung haben:
  204. alert none 1 "Ich bin die Okami-Shell" "Schön"
  205. alert 0 1 "Ich bin die Okami-Shell" Schön
  206.  
  207.     Sicherheitsabfrage:
  208. alert ques 1 "Die Datei $FILE existiert bereits.^|Soll sie gelöscht werden?" ^
  209. "Ja^|Nein" ERG
  210. if [ $ERG = 1 ]
  211. then
  212.   rm $FILE
  213. fi
  214.  
  215. -----
  216. alias - Einfache Shellfunktionen erzeugen
  217.  
  218. Syntax: alias Name String
  219.  
  220. Dieses Kommando ist ein Ersatz für das Alias-Konzept der C-Shell, das von
  221. der Okami-Shell nicht unterstützt wird (da es es in dem Vorbild der Okami-
  222. Shell, der Bourne-Shell, auch nicht gibt). Es dient dazu, Shellscripts aus-
  223. zuführen, die für eine Shell geschrieben wurde, die über alias verfügt
  224. (z.B. die Gulam- oder Mastershell).
  225. Das Alias-Konzept sieht einen Makroprozessor vor, der eine eingegebene
  226. Kommandozeile aufgrund der aliasse expandiert. In der Okami-Shell ist dieses
  227. Konzept überflüssig, da man jedes alias durch eine Shellfunktion darstellen
  228. kann. (Genauso wie man in C jedes Präprozessor-Makro durch eine Funktion er-
  229. setzen kann, aber nicht umgekehrt.)
  230. Das Kommando "alias Name String" ist äquivalent zu:
  231.  
  232.     Name()
  233.     {
  234.       String $*
  235.     }
  236.  
  237. , d.h. es wird eine Shellfunktion mit dem angegebenen Namen erzeugt, die
  238. den angegebenen String zusammen mit dem Rest der Kommandozeile ausführt.
  239.  
  240. Um den absoluten Namen eines externen Kommandos zu speichern, um die Such-
  241. zeit zu verringern (z.B. "alias cc c:/compiler/cc.ttp"), sollte man statt-
  242. dessen lieber das hash-Kommando benutzen ("hash cc c:/compiler/cc.ttp").
  243.  
  244. Beispiele:
  245.  
  246. alias l ls -l        definiert eine Shellfunktion namens l, die sich wie
  247.             ls -l verhält. "l *.c" ist dann also äquivalent zu
  248.             "ls -l *.c".
  249. alias cp !cp -v        sorgt dafür, daß alle Kopieroperationen im Verbose-
  250.             modus ablaufen. Wichtig ist das Ausrufezeichen vor
  251.             cp im Funktionsrumpf, das dafür sorgt, daß hier das
  252.             interne Kommando cp und nicht die Shellfunktion cp
  253.             aufgerufen wird.
  254.  
  255. Es kann nicht garantiert werden, daß sich die mit alias geschaffenen Shell-
  256. funktionen in allen Sonderfällen (Verschachtelungen etc.) genauso verhalten
  257. wie ein alias auf einer Shell, die alias-Expansion durchführt.
  258.  
  259. Siehe auch:    hash
  260.         unalias (unset)
  261.  
  262. -----
  263. backup - Dateien auf Diskette sichern
  264.  
  265. Syntax: backup [-nNrq] [Zieldirectory]
  266.  
  267. Dient zum Sichern von Dateien auf Diskette. Es werden von StdIn Datei-
  268. namen eingelesen. Diese Dateien werden in das angegebene Zieldirectory
  269. oder, falls keins angegeben ist, nach A:\ gespeichert. Dabei werden alle
  270. benötigten Ordner angelegt.
  271. Alle von StdIn eingelesenen Zeilen werden als Dateinamen betrachtet, mit
  272. der Ausnahme von Zeilen, die mit einem Doppelkreuz (#) beginnen; diese
  273. werden als Kommentarzeilen betrachtet. Leerzeilen werden ignoriert.
  274. Wenn auf dem Ziellaufwerk kein Platz mehr für weitere Dateien ist, fragt
  275. backup nach der nächsten Diskette. Die Anfrage wird durch Druck auf ENTER
  276. beantwortet; drückt man stattdessen ESC, wird backup abgebrochen.
  277. Die laufende Nummer der jeweiligen Diskette wird im Bootsektor der
  278. Diskette abgelegt (nur bei Disketten, also Laufwerk A: oder B:.)
  279. Nach dem Ende des Backups wird die Anzahl der Dateien, Bytes und benutzter
  280. Disketten ausgegeben.
  281.  
  282. Flags:
  283.     -n    Es werden keine Daten in den Bootsektor geschrieben.
  284.     -N    Es werden keine Daten kopiert. Das ist nützlich, um
  285.         herauszufinden, wieviele Disketten für ein Backup be-
  286.         nötigt werden. Die Disketten müssen in der vorgesehenen
  287.         Reihenfolge eingelegt werden, werden aber nicht beschrieben.
  288.         Impliziert -n.
  289.     -r    Es werden keine Unterordner des Zieldirectories angelegt,
  290.         Dateien landen im Zieldirectory selber.
  291.     -q    Es wird angenommen, daß die erste Diskette bereits im Lauf-
  292.         werk eingelegt ist, daher entfällt die Frage nach dem
  293.         Einlegen der ersten Diskette. Dies ist nützlich, wenn Daten
  294.         statt auf eine Diskette auf eine Festplatte gesichert
  295.         werden.
  296.  
  297.  
  298. Beispiele:
  299.     backup <files.lst
  300.         Aus der Datei files.lst werden Namen von Dateien gelesen,
  301.         die auf Diskette A: gesichert werden. Die Datei files.lst
  302.         kann Kommentarzeilen enthalten, die mit # beginnen.
  303.  
  304.     find d:\ * | backup
  305.         sichert alle Dateien von Partition D: auf Diskette A:.
  306.  
  307.     ls *.c | backup -q e:\backup\source
  308.         sichert alle C-Quelldateien vom aktuellen Directory in
  309.         das Directory e:\backup\source. Da E: keine Diskette
  310.         ist, werden keine Daten in den Bootsektor geschrieben.
  311.         Es erfolgt keine Nachfrage zum Einlegen einer Diskette.
  312.  
  313.     find e:\ *.c | backup -N b:
  314.         findet heraus, wieviele Disketten zum Sichern aller C-
  315.         Quelldateien von Partition E: benötigt würden. Es wird
  316.         Diskettenlaufwerk B: benutzt.
  317.  
  318. Rückgabewert:
  319.     -1    Aufruffehler
  320.     sonst    Anzahl der gesicherten Dateien.
  321.  
  322. -----
  323. basename - Basis-Dateinamen ermitteln
  324.  
  325. Syntax: basename File [Extender]
  326.  
  327. Ausgabe des reinen Dateinamens ohne Laufwerk und Ordner. Wenn ein Extender
  328. angegeben wird und der Dateiname mit diesem Extender endet, wird der Basis-
  329. name ohne diesen Extender ausgegeben. Datei muß es sich nicht unbedingt um
  330. den 3-Zeichen-TOS-Dateitypextender handeln, sondern um eine beliebig lange
  331. Zeichenkette, die vom Ende des Basisnamens abgeschnitten wird.
  332.  
  333. Beispiele:                     ergibt:
  334.     basename d:/shell/sh.ttp         sh.ttp
  335.     basename sh.ttp                sh.ttp
  336.     basename d:/shell/sh.ttp .ttp        sh
  337.     basename d:/compiler iler        comp
  338.  
  339. Anmerkung: Die Arbeitsweise dieses Kommandos hängt in keiner Weise davon ab,
  340. ob die angegebene Datei existiert. Das gilt auch für die Kommandos dirname,
  341. drvname, extname und fullname.
  342.  
  343. Siehe auch: dirname
  344.         drvname
  345.         extname
  346.         fullname
  347.  
  348. -----
  349. basep - Basepage analysieren
  350.  
  351. Syntax: basep [-pa] [Adresse]
  352.  
  353. Mit diesem Kommando kann:
  354. 1) die Adresse der Basepage des Shell-Programms herausgefunden werden,
  355. 2) diese oder eine andere Basepage analysiert werden,
  356. 3) wahlweise stattdessen die Adresse der Parent-Basepage gefunden oder
  357.    diese analysiert werden.
  358.  
  359. Hierbei bedeutet "analysiert", daß die einzelnen in der Basepage enthaltenen
  360. Adressen und sonstigen Angaben ausgegeben werden.
  361.  
  362. Wenn keine Adresse angegeben ist, wird die Basepage des aktuellen Shell-
  363. Prozesses benutzt.
  364.  
  365. Bei der Analyse werden alle Angaben, auch die Längenangaben der einzelnen
  366. Programmsegmente, in hexadezimaler Schreibweise ausgegeben. Das interne
  367. Kommando num kann für die Konvertierung in dezimale Schreibweise benutzt
  368. werden.
  369.  
  370. Flags:
  371.     -a    Wenn dieses Flag angegeben ist, wird die Analyse der Base-
  372.         page ausgegeben. Ansonsten wird nur die Adresse ausgegeben.
  373.     -p    Wenn dieses Flag angegeben ist, wird die Parent-Basepage
  374.         benutzt.
  375.  
  376. Beispiele:
  377. 1) Herausfinden der aktuellen Basepage-Adresse:
  378.     basep
  379.  
  380. 2) wie 1), aber Umformung ins Dezimalsystem:
  381.     basep | xargs num -d
  382.  
  383. 3) Herausfinden der Adresse der Basepage des aufrufenden Programms:
  384.     basep -p
  385.  
  386. 4) Analyse der Basepage an Adresse 0x65A40:
  387.     basep -a 0x65a40
  388.    Diese Adresse kann z.B. von dem Kommando exec oder ps stammen.
  389.  
  390. Siehe auch:    exec
  391.         ps
  392.  
  393. -----
  394. bombs - Erzeugt Bomben
  395.  
  396. Syntax: bombs Anzahl
  397.  
  398. Mit diesem Kommando wird die Shell mit der angegebenen Anzahl von Bomben
  399. beendet. Die Anzahl muß größer oder gleich 2 sein. Es erfolgt ein Sprung
  400. an die Adresse, die in dem entsprechenden Vektor (Adresse 4*Anzahl) ange-
  401. geben ist.
  402. Dieses Kommando kann z.B. benutzt werden, um einen Debugger oder eine Umlen-
  403. kung der Exception-Vektoren zu testen.
  404.  
  405. -----
  406. break - SIEHE while
  407.  
  408. -----
  409. cat - Dateien anzeigen
  410.  
  411. Syntax: cat [-bR] {File}
  412.  
  413. Kopiert Daten von StdIn oder, falls angegeben, von File, nach StdOut.
  414.  
  415. Wenn das Flag -b angegeben ist, werden die Dateien im Binärmodus geöffnet,
  416. es findet also keine Übersetzung von CR/LF-Sequenzen statt. Das ist sinn-
  417. voll, wenn man Binärdateien wie z.B. ausführbare Programmdateien o.ä. an-
  418. einanderhängen will. Damit das funktioniert, sollte man dann aber auch
  419. das Shell-Flag u setzen (siehe "set").
  420.  
  421. Wenn das Flag -R angegeben ist, werden alle Buchstaben um 13 Zeichen ver-
  422. schoben (rot13). Dies ist ein hin und wieder unter Unix benutztes, simples
  423. Verschlüsselungsverfahren, um Dateien auf dem ersten Blick unlesbar zu
  424. machen. Klartext kann mit -R verschlüsselt werden, verschlüsselter Text
  425. wird mit -R wieder zu Klartext. Es sind nur Buchstaben (A...Z und a...z)
  426. betroffen - Ziffern und Sonderzeichen bleiben unverändert.
  427.  
  428. Bsp.:
  429. 1) cat test.dat
  430. gibt den Inhalt der Datei test.dat auf dem Bildschirm aus.
  431.  
  432. 2) cat test.dat >PRT:
  433. druckt die Datei test.dat aus. Unter Mint sollte man folgendes benutzen:
  434.    cat test.dat >u:/dev/prn
  435.  
  436. 3) cat dat.1 dat.2 dat.3 > dat.123
  437. hängt die Dateien dat.1 bis dat.3 aneinander und schreibt das Ergebnis
  438. in die Datei dat.123.
  439.  
  440. 4) set +u
  441.    cat -b test1.prg test2.prg >test.bin
  442. arbeitet im Binärmodus, wodurch keine Übersetzung von CR/LF-Sequenzen in
  443. den Dateien stattfindet.
  444.  
  445. Die Verwendung von "cat >file", um Tastatureingaben in eine Datei zu schrei-
  446. ben, ist nicht möglich, da bei der Eingabe auch das Tastaturecho in die Datei
  447. umgeleitet würde. Hierbei handelt es sich um ein prinzipielles Problem von
  448. Gemdos.
  449.  
  450. Siehe auch:    crypt
  451.         raw
  452.  
  453. -----
  454. cd - Wechsel des aktuellen Directories
  455.  
  456. Syntax: cd [Pfad]
  457.  
  458. Setzt das aktuelle Arbeitsverzeichnis auf $HOME oder, falls angegeben,
  459. auf Pfad. Pfad kann erweiterte Wildcards enthalten.
  460. Wenn Pfad nicht mit einem Backslash (\ oder /) beginnt oder ein entsprechendes
  461. Verzeichnis nicht existiert, werden die in der Shellvariablen CDPATH gespei-
  462. cherten Pfade nach einem entsprechenden Verzeichnis durchsucht. Das aktuelle
  463. Arbeitsverzeichnis wird dann auf das erste gefundene Verzeichnis eingestellt.
  464.  
  465. Beispiele:
  466.     cd
  467.         entspricht cd $HOME
  468.     cd e:\okami\test
  469.         Wechsel von Laufwerk und Verzeichnis
  470.     cd test
  471.         Wechsel in den Ordner "test" im aktuellen Verzeichnis
  472.     cd ..
  473.         Wechsel ins Parent-Directory des aktuellen Verzeichnisses
  474.     cd t*
  475.         Wechsel in den ersten Ordner, dessen Name mit t beginnt
  476.  
  477. -----
  478. chmod - Dateiattribute ändern
  479.  
  480. Syntax: chmod [(+|-)cdrhsvf] File {File}
  481.  
  482. Flags: Bei Verwendung von + wird bei allen angegebenen Dateien das ent-
  483.        sprechende Dateiattribut gesetzt, bei Verwendung von - wird es
  484.        gelöscht. Die Flags bedeuten:
  485.     c    Written & Closed    (Archivstatus)
  486.     d    Directory        (Ordner)
  487.     r    Read-Only        (nur lesen)
  488.     h    Hidden            (unsichtbar; nur für Dateien)
  489.     s    System File        (Systemdatei)
  490.     v    Volume Lable        (Diskettenname)
  491.     f    Fastload        (Fastload-Bit des Programmheaders,
  492.                      nur für ausführbare Programmdateien)
  493.  
  494. Die Flags können beliebig kombiniert werden, allerdings geben nicht alle
  495. Kombinationen einen Sinn. Das Betriebssystem verbietet gewisse Kombinationen
  496. wie z.B. das Verstecken von Ordnern. Das Setzen oder Löschen des Directory-
  497. Flags sollte man bleibenlassen.
  498.  
  499. Das Flag f betrifft das Fastload-Bit im Programmheader. Es kann nur für
  500. ausführbare Programmdateien benutzt werden (eine Datei gilt als soche, wenn
  501. ihr erstes Wort 0x60a ist), bei anderen Dateien erscheint eine Fehlermeldung.
  502. Das Fastload-Bit bewirkt, daß nach dem Laden des Programms nicht der gesamte
  503. Speicher, sondern nur das BSS-Segment gelöscht wird.
  504.  
  505. Wenn eine Datei einmal das Volume Label-Flag hat, kann dieses nicht mehr
  506. entfernt werden, da die Datei dadurch von der normalen Dateisuche
  507. (Fsfirst/next) ausgeschlossen ist.
  508.  
  509. Das Einstellen der Ausführbarkeit ist (anders als in Unix) mit chmod nicht
  510. möglich, da hierfür der Dateinamen-Extender verantwortlich ist.
  511.  
  512. Die Einstellung der Attribute einer Datei kann mit ls -lf angesehen werden.
  513.  
  514. -----
  515. clipb - Initialisierung des GEM-Clipboards
  516.  
  517. Syntax: clipb [Pfad]
  518.  
  519. Das Clipboard (oder Scrap-Directory) ist eine Einrichtung des Betriebssystems,
  520. das die temporäre Datenablage und den Datenaustausch zwischen mehreren Pro-
  521. grammen unterstützen soll. Es besteht aus nichts weiter als einem Directory,
  522. dessen Name vom AES gespeichert wird. Programme, die das Clipboard benutzen,
  523. müssen sich diesen Namen vom AES mitteilen lassen und können, wenn sie sich
  524. an einige Konventionen halten, mühelos mit anderen Programmen Dateien aus-
  525. tauschen.
  526.  
  527. Die Okami-Shell unterstützt das Clipboard auf folgende Weise:
  528.  
  529. 1) Nach Programmstart wird die Shell-Variable CLIPDIR mit dem Wert
  530.    "X:\scrapdir\scrap.*" initialisiert, wobei X: das Bootlaufwerk ist. Das
  531.    Atari-Profibuch schlägt diesen Pfad als Clipboard vor. Dies hat noch nichts
  532.    mit AES zu tun, da AES zu diesem Zeitpunkt noch gar nicht initialisiert ist.
  533. 2) Wenn die Shell mit dem Kommando gon bei AES angemeldet wird, wird der
  534.    tatsächliche Clipboard-Pfad ermittelt und, falls vorhanden, in CLIPDIR ab-
  535.    gelegt. Wenn noch kein Clipboard-Pfad definiert worden ist, wird der
  536.    Inhalt von CLIPDIR als solcher festgelegt.
  537. 3) Das Kommando clipb legt (falls vorhanden) seinen Parameter in CLIPDIR
  538.    ab ("clipb c:/scrap/*" beinhaltet also "CLIPDIR=c:/scrap/*"). Falls gon
  539.    aktiv ist, wird danach der (ggfs. neue) Wert von CLIPDIR dem AES als
  540.    Clipboard-Directory mitgeteilt. Außerdem wird der zugehörige Pfad an-
  541.    gelegt.
  542.  
  543. Eine korrekte Initialisierung des Clipboards sieht also so aus:
  544.  
  545.     gon
  546.     clipb
  547.  
  548. oder, wenn man den Pfad ändern will:
  549.  
  550.     gon
  551.     clipb g:/scrap/scrap.*
  552.  
  553. Diese Zeilen sollte man in sein Profile setzen, wenn man Programme benutzen
  554. will, die das Clipboard verwenden.
  555. Shellscripts können das Clipboard ebenfalls einsetzen, indem sie dessen Pfad
  556. der Shell-Variablen CLIPDIR entnehmen.
  557. Achtung: zu dem Clipboard-Pfad gehört nicht nur der Name des Ordners, sondern
  558. auch der Name der zu benutzenden Dateien (scrap.*)!
  559.  
  560. Dieses Kommando benutzt keine Standard-Ein- oder Ausgabe.
  561.  
  562. Siehe auch:    gon
  563.  
  564. -----
  565. cls - Bildschirm initialisieren
  566.  
  567. Syntax: cls
  568.  
  569. Löscht den Bildschirm, setzt den Cursor auf die erste Spalte in der
  570. ersten Zeile und schaltet den Cursor auf sichtbar. Außerdem wird das
  571. Word Wrap angeschaltet, das dafür sorgt, daß Ausgaben, die länger als
  572. eine Zeile sind, auf mehrere Zeilen verteilt werden.
  573.  
  574. -----
  575. cmds - Ausgabe der internen Kommandos
  576.  
  577. Syntax: cmds [-C] {Pattern}
  578.  
  579. Es werden die Namen aller interner Kommandos ausgegeben, die auf die ange-
  580. gebenen Patterns passen. Dabei gelten die Regeln der erweiterten Wildcards
  581. (siehe okami.doc). Wenn kein Pattern angegeben ist, werden alle internen
  582. Kommandos ausgegeben.
  583. Wenn -C angegeben ist, werden die Kommandos in mehreren Spalten, ansonsten
  584. eins pro Zeile ausgegeben.
  585.  
  586. Beispiele:
  587.     cmds        Ausgabe aller interner Kommandos
  588.     cmds t*        Ausgabe aller Komandos, die mit t beginnen.
  589.     cmds [abcd]*e    Ausgabe aller Kommandos, die mit a,b,c oder d beginnen
  590.             und mit e aufhören.
  591.     cmds | wc -l    Ausgabe der Anzahl der internen Kommandos.
  592.  
  593. Rückgabewert: Es wird die Anzahl der ausgegebenen Kommandos zurückgegeben.
  594.  
  595. -----
  596. continue - SIEHE while
  597.  
  598. -----
  599. cookie - Auslesen des Cookie-Jars
  600.  
  601. Syntax: cookie [-xdn0sc] {cookie}
  602.  
  603. Mit diesem Kommando kann der Cookie-Jar des Betriebssystems ausgelesen werden.
  604. Der Cookie-Jar wird erst ab TOS 1.06 vom Betriebssystem selber genutzt, kann
  605. aber (was die Okami-Shell tut) in allen früheren TOS-Versionen einfach in-
  606. stalliert werden.
  607. In dem Cookie-Jar können sich Programme mit einer Namenskennung und einer
  608. Versionsnummer eintragen. Die Kennung ist genau 4 Bytes lang, belegt also ge-
  609. nau wie die Versionsnummer ein Langwort (32 bit). Die Kennung der Okami-Shell
  610. ist "OkSh", die Versionsnummer enthält bei Version 1.5 eine 1 im oberen und
  611. eine 5 im unteren Byte des ersten Wortes (ist also 0x105).
  612.  
  613. Es werden alle Cookies ausgegeben, die auf die angeführten Parameter passen,
  614. wobei dieselben Regeln wie für die erweiterten Wildcards gelten (siehe 
  615. okami.doc). Wenn keine Parameter angegeben sind, lautet die Defaulteinstellung
  616. "*", es werden also alle Cookies ausgegeben.
  617.  
  618. Der Rückgabewert ist die Anzahl der so gefundenen Cookies. Das Kommando kann
  619. dadurch benutzt werden, um das Vorhandensein eines bestimmten Cookies nachzu-
  620. prüfen.
  621.  
  622. Flags:
  623.     -x    Die Versionsnummer wird hexadezimal ausgegeben.
  624.     -d    Die Versionsnummer wird dezimal ausgegeben.
  625.     -n    Die Versionsnummer wird in der Form x.y ausgegeben, wobei
  626.         x das obere und y das untere Byte des ersten Wortes darstellt.
  627.         x und y    werden dabei dezimal ausgegeben.
  628.         Dies ist die Default-Einstellung, wenn keine anderen Flags
  629.         angegeben sind.
  630.     -0    Es erfolgt keine Ausgabe. Ist nützlich beim Testen auf vor-
  631.         handene Cookies, siehe untenstehendes Beispiel.
  632.     -s    Es wird außerdem eine Statistikangabe über freie und belegte
  633.         Plätze im Cookie-Jar ausgegeben.
  634.     -c    Wenn dieses Flag angegeben ist, wird ein neuer Cookiejar ange-
  635.         legt, in den die Shell sich einträgt. Dabei wird ein evtl.
  636.         vorhandener Cookiejar überschrieben. Man sollte dieses Flag
  637.         nur benutzen, wenn der Verdacht besteht, daß eine unzulässige
  638.         Adresse als Basisadresse des Cookiejar eingetragen ist (z.B.
  639.         von einem weggebombtem Programm, das keine Zeit mehr hatte,
  640.         die Adresse zu entfernen).
  641.         Dieses Flag sollte nur in Notfällen angewandt werden. Wenn
  642.         ein früheres Programm, von dem aus die Shell gestartet wurde,
  643.         einen Cookiejar anlegt und mit cookie -c diese Adresse ver-
  644.         ändert wird, das Programm das aber nicht bemerkt, kann das
  645.         zum Absturz dieses Programmes führen, wenn es versucht, den
  646.         betreffenden Speicherbereich wieder freizugeben. (Die Okami-
  647.         Shell ist gegen solche Vorfälle geschützt.)
  648.         Insbesondere mit Mint dürften beim Anlegen eines neuen
  649.         Cookiejars eigenartige Effekte auftreten, da ohne den
  650.         MiNT-Cookie kein Programm mehr in der Lage ist, das Vor-
  651.         handensein von Mint festzustellen.
  652.  
  653. Es kann nur eins der Flags x, d, n angegeben werden. Wenn mehrere dieser Flags
  654. angegeben sind, gilt nur das zuerst stehende.
  655.  
  656. Beispiele:
  657.     cookie
  658.                 gibt alle installierten Cookies aus.
  659.     cookie -s [A-Z]*
  660.                 gibt alle Cookies, die mit einem Großbuch-
  661.                 staben beginnen, sowie die Statistik aus.
  662.     cookie -x OkSh
  663.                 gibt den Okami-Cookie hexadezimal aus.
  664.     if cookie -0 MiNT
  665.     then
  666.       echo MiNT ist installiert.
  667.     else
  668.       echo MiNT ist nicht installiert.
  669.     fi
  670.                 Findet heraus, ob Mint installiert ist. Das
  671.                 cookie-Kommando erzeugt in dieser Form keine
  672.                 Ausgabe.
  673.  
  674. Rückgabewert: -2, wenn kein Cookie-Jar installiert ist (was nicht geschehen
  675. dürfte), -1 bei einem Syntaxfehler, sonst die Anzahl der gefundenen Cookies.
  676. Wenn -0 angegeben ist, wird, wenn kein Cookie-Jar installiert ist (was hin
  677. und wieder doch geschieht), 0 zurückgegeben.
  678.  
  679. Die Basisadresse des aktuellen Cookie-Jars kann mit dem Kommando "adr" er-
  680. mittelt werden.
  681.  
  682. -----
  683. cp - Dateien kopieren
  684.  
  685. Syntax: cp [-acCvifq] Source {Source} Dest
  686.  
  687. Wenn Dest der Name eines existierenden Ordners ist, werden alle Dateien
  688. Source in diesen Ordner kopiert. Der Dateiname der Kopien ist dann
  689. Dest/`basename Source`.
  690. Wenn Dest nicht der Name eines existierenden Ordners ist, wird die Datei
  691. Source in die Datei Dest kopiert. In diesem Fall darf nur ein Source an-
  692. gegeben sein.
  693. Die Source-Angaben dürfen erweiterte Wildcards enthalten. Die Maximalanzahl
  694. der auf diese Weise benutzbaren Source-Dateien ist 100. Es dürfen keine
  695. Ordner als Source angegeben werden.
  696.  
  697. Flags:
  698.     -a    Die Quelldatei wird an die Zieldatei angehängt. Wenn dieses
  699.         Flag angegeben ist, darf auch bei mehreren Source-Dateien
  700.         `Dest' eine Datei sein.
  701.     -c    Es werden nur Dateien kopiert, bei denen das Archiv-
  702.         Bit gesetzt ist.
  703.     -C    Nach dem Kopieren wird in der Quelldatei das Archivbit
  704.         gelöscht.
  705.     -v    Bei jeder kopierten Datei wird eine Meldung ausgegeben. Das
  706.         ist nützlich beim Kopieren von vielen Dateien auf einmal.
  707.     -i    Fragt vor dem Überschreiben bereits vorhandener Zieldateien
  708.         nach, ob diese überschrieben werden dürfen.
  709.     -f    Überschreibt keine bereits vorhandenen Dateien.
  710.     -q    Es erfolgen keine Ausgaben außer Syntaxfehlermeldungen und
  711.         Informationen über fehlenden Speicherplatz (also keine
  712.         Meldungen wegen bereits vorhandener Zieldatei, nicht ge-
  713.         setztem Archivbit etc.)
  714.  
  715.  
  716. Beispiele:
  717. cp sh.ttp sh.prg        kopiert eine Datei.
  718. cp sh.ttp d:/shell        kopiert eine Datei in einen Ordner, erzeugt
  719.                 wird d:/shell/sh.ttp.
  720. cp e:/source/*.c a:/        kopiert alle C-Dateien auf die Diskette.
  721. cp -f e:/source/*.c a:/        dito, aber bereits vorhandene Dateien werden
  722.                 nicht überschrieben.
  723. cp -a file1 file2        wesentlich schneller als `cat file1 >>file2'
  724. cp -cC e:/txt/* a:/        Backup aller Dateien von e:/txt nach A:
  725.  
  726. Siehe auch:    ln
  727.         mv
  728.  
  729. -----
  730. crypt - Daten ver- und entschlüsseln
  731.  
  732. Syntax: crypt Schlüssel
  733.  
  734. crypt liest Daten von StdIn, verschlüsselt sie mit dem angegebenen Schlüssel
  735. und schreibt das Ergebnis nach StdOut.
  736. Durch erneutes Verschlüsseln werden die Daten wieder entschlüsselt.
  737.  
  738. Benutzt wird der Verschlüsselungsalgorithmus von MicroEmacs, was bedeutet, daß
  739. die Verschlüsselung kompatibel ist zu allen MicroEmacs-Versionen auf allen
  740. Rechnern. Die in der Okami-Shell verwendete Verschlüsselungsroutine stammt
  741. aus den Quellen von MicroEmacs 3.9+.
  742.  
  743. Der Verschlüsselungsalgorithmus ist so angelegt, daß druckbare Ascii-Zeichen
  744. wieder in solche verschlüsselt werden. Steuerzeichen (Ascii<32 oder >127)
  745. werden nicht verändert. Dadurch ist die Verschlüsselung einer reinen Ascii-
  746. Datei wieder eine reine Ascii-Datei.
  747.  
  748. Eine wesentlich simplere (und weniger sichere) Verschlüsselung bietet
  749. das Kommando cat mit der Option -R, nämlich die rot13-Verschlüsselung.
  750.  
  751. Beispiele:
  752.     crypt xyz <secret.txt >secret.crp
  753.         verschlüsselt die Datei secret.txt und speichert das Ergebnis
  754.         in der Datei secret.crp. Es wird der Schlüssel "xyz" benutzt.
  755.     crypt xyz <secret.crp
  756.         entschlüsselt secret.crp und gibt das Ergebnis auf dem Bild-
  757.         schirm aus.
  758.     crypt abc <secret.txt | crypt abc
  759.         hat dieselbe Wirkung wie "cat secret.txt".
  760.     ls -la *.c | crypt dubidu | hd
  761.         erzeugt eine Dateiliste, verschlüsselt sie mit dem Schlüssel
  762.         "dubidu" und fertigt von dem Ergebnis ein Hexdump an.
  763.     crypt abc secret.txt
  764.         verschlüsselt die Tastatureingabe anhand des Schlüssels
  765.         "abc secret.txt".
  766.  
  767. -----
  768. cursor - Konfiguration des VT52-Cursors
  769.  
  770. Syntax: cursor [(+|-)bv] [Rate]
  771.  
  772. Beim Aufruf ohne Parameter wird die aktuelle Blinkrate nach StdOut ge-
  773. schrieben.
  774. Wenn Rate angegeben wird, wird die Blinkrate auf Rate gesetzt. Werte für
  775. Rate: 30 normal, <30: schneller, >30: langsamer, 0: nicht blinkend.
  776. Flags: +v    der Cursor wird sichtbar.
  777.        -v    der Cursor wird unsichtbar.
  778.        +b    der Cursor wird blinkend.
  779.        -b    der Cursor hört auf zu blinken (unabhängig von Rate).
  780.  
  781. Beispiel:
  782. Der Cursor soll während der Ausführung eines Programms schneller blinken
  783. und dann auf den alten Wert zurückgestellt werden.
  784.  
  785.     ALT=`cursor`
  786.     cursor 5
  787.     .....................    (das auszuführende Programm)
  788.     cursor $ALT
  789.     unset ALT
  790.  
  791. Siehe auch:    keyb
  792.         mouse
  793.         scr
  794.  
  795. -----
  796. dark - Bildschirm dunkelschalten
  797.  
  798. Syntax: dark
  799.  
  800. Hat dieselbe Wirkung wie ein Druck auf Control-A in der Tastatureingabe
  801. (siehe okami.doc). Der Sinn dieses Kommandos ist, daß man von Programmen
  802. aus, die Shellaufrufe über den _shell_p-Zeiger ermöglichen, den Bildschirm
  803. auf Kommando dunkelschalten kann.
  804.  
  805. -----
  806. date - Formatierte Ausgabe der Systemzeit
  807.  
  808. Syntax: date [+Fmt]
  809.  
  810. Datum und Uhrzeit werden nach StdOut geschrieben.
  811. Wenn ein mit einem Pluszeichen eingeleiteter Formatstring angegeben ist,
  812. wird das Datum in dem angegebenen Format ausgegeben. In dem Formatstring
  813. können Formatelemente enthalten sein, die folgendes bedeuten:
  814.  
  815.     %a    Wochentag kurz (Sun, Mon, ...)
  816.     %A    Wochentag lang (Sunday, Monday, ...)
  817.     %d    Nummer des Tages im Monat (00...31)
  818.     %h    Abkürzung des Monatsnamens (Jan...Dec)
  819.     %H    Stunde (00...23)
  820.     %m    Nummer des Monats (00...12)
  821.     %M    Minute (00...59)
  822.     %n    erzeugt einen Zeilenvorschub
  823.     %S    Sekunde (00...59)
  824.     %t    ein Tabulatorvorschub
  825.     %w    Wochentag numerisch (0=Sonntag, 1=Montag, ...)
  826.     %y    Jahr zweistellig (00...99)
  827.     %Y    Jahr vierstellig (1900...)
  828.     %%    ein Prozentzeichen
  829.  
  830. Alle anderen Zeichen werden direkt ausgegeben.
  831.  
  832. Wenn kein Formatstring angegeben ist, lautet die Voreinstellung:
  833.     date +%a %d-%m-%Y %H:%M:%S
  834.  
  835. Beispiele:
  836.     Eingabe...            Ausgabe... (z.B.)
  837.     date                Sat 06-09-1992 21:38:07
  838.     date +Das Jahr ist %Y        Das Jahr ist 1992
  839.     date +%h. %dth, %Y        Sep. 06th, 1992
  840.     date +Hallo, wie gehts        Hallo, wie gehts
  841.  
  842. -----
  843. dial - Telefonnummern über das Modem wählen
  844.  
  845. Syntax:    dial [-q|-f [Dateiname]|{Nummer|Kürzel|-d}]
  846.  
  847. Dieses Kommando ist für Besitzer von Modems interessant, an denen ein Telefon
  848. angeschlossen werden kann. Man kann Telefonnummern vom Rechner aus über das
  849. Modem wählen lassen und dann normal telefonieren. Das dial-Kommando erweitert
  850. das vorhandene Telefon um Rufnummernverzeichnis, Tastatur, Display und
  851. Wahlwiederholung.
  852.  
  853. Wenn kein Parameter angegeben ist, wird die beim letzten Aufruf angegebene
  854. Nummer noch einmal gewählt.
  855.  
  856. Wenn der Parameter -q angegeben ist, wird die beim letzten Aufruf angegebene
  857. Nummer ausgegeben.
  858.  
  859. Wenn der Parameter -f, gefolgt von einem Dateinamen, angegeben ist, wird die
  860. angegebene Datei als Rufnummerndatei geladen. Wenn -f ohne Dateinamen ange-
  861. geben ist, wird eine evtl. residente Rufnummerndatei aus dem Speicher ent-
  862. fernt.
  863.  
  864. Achtung: wenn eins der Flags -f oder -q benutzt wird, so dürfen keine anderen
  865. Flags oder Parameter benutzt werden.
  866.  
  867. Alle anderen Parameter werden als Nummern oder Kürzel betrachtet. Als Nummer
  868. gilt alles, was mit einer Ziffer beginnt, als Kürzel gilt alles andere. Ein
  869. Underscore als Kürzel steht für die beim letzten Aufruf angegebene Nummer.
  870. Wenn dabei das Flag -d angegeben ist, wird die Nummer nur ausgegeben und
  871. nicht gewählt.
  872.  
  873. Die Kürzel werden anhand einer Rufnummerndatei interpretiert. Diese Datei wird
  874. bei ihrer ersten Benutzung in den Speicher geladen und resident gehalten, bis
  875. mit -f eine andere Datei gewählt oder die Shell beendet wird. Der Default-
  876. Dateiname ist $ETC/dial.inf .
  877.  
  878. Die einzelnen Zeilen der Rufnummerndatei enthalten jeweils ein Kürzel und eine
  879. Nummer. Kürzel und Nummer müssen durch mindestens ein Whitespace-Zeichen 
  880. (Space, Tab...) getrennt sein. Groß/Kleinschreibung ist ohne Bedeutung. Alle
  881. nicht-Ziffern in der Nummer werden ignoriert. Zeilen, die mit einem Doppel-
  882. kreuz beginnen, sowie Leerzeilen gelten als Kommentarzeilen. Whitespace-
  883. Zeichen am Anfang und Ende der Zeilen werden ebenfalls ignoriert.
  884.  
  885. Die Nummer wird gewählt, indem folgende Zeichenketten nacheinander an die
  886. serielle Schnittstelle geschickt werden:
  887.  
  888.     1) der Inhalt der Shellvariablen DIALPREFIX oder, wenn diese
  889.        Variable nicht gesetzt ist, die Zeichenkette "ATD",
  890.     2) alle Ziffern der gewählten Nummer,
  891.     3) ein CR-Zeichen.
  892.  
  893. Der Anwender hat selber dafür zu sorgen, daß an der Schnittstelle ein Modem
  894. angeschlossen ist und daß die Schnittstelle korrekt initialisiert und
  895. konfiguriert ist.
  896.  
  897. Wenn bei der Expansion der Kürzel ein Fehler auftritt, weil die Rufnummern-
  898. datei nicht geöffnet werden kann oder ein unbekanntes Kürzel auftritt, wird
  899. das Kommando nicht abgebrochen, sondern es wird das fehlerhafte Kürzel ig-
  900. noriert.
  901.  
  902. Beispiele:
  903.  
  904. Auszug aus einer Rufnummerndatei:
  905.  
  906.     # Vorwahlen
  907.     Aachen        0241
  908.     Köln        0221
  909.     München        089
  910.     # Nummern
  911.     W.Rösler    534596
  912.     Zeit        1191
  913.  
  914. dial 534596
  915.             die angegebene Nummer wird gewählt.
  916. dial 0241 _
  917.             die letzte Nummer wird mit einer Vorwahl versehen.
  918.             Anstelle des Underscores tritt die zuletzt gewählte
  919.             Nummer.
  920. dial 0241 534596
  921.             mit Vorwahl.
  922. dial 0241534596
  923.             hat dieselbe Wirkung.
  924. dial 0241-53.45.96
  925.             ebenso. Nicht-Ziffern werden ignoriert.
  926. dial Aachen 123456
  927.             die Vorwahl von Aachen wird aus der Rufnummerndatei
  928.             geholt.
  929. dial Aachen W.Rösler
  930.             Vorwahl und Nummer werden aus der Datei geholt.
  931. dial aachen w.rösler
  932.             ebenso. Groß/Kleinschreibung ist ohne Bedeutung.
  933. dial -d Köln 121.345.4-5
  934.             die Nummer wird zusammengebaut und ausgegeben, aber
  935.             nicht gewählt (-d).
  936. dial -f mydial
  937.             die Datei mydial wird als Rufnummerndatei geladen. Es
  938.             wird nichts gewählt.
  939. dial -f
  940.             eine evtl. residente Rufnummerndatei wird aus dem
  941.             Speicher entfernt.
  942. DIALPREFIX=ATDT
  943.             Einstellen eines anderen Präfixes für die zum Modem
  944.             zu schickende Steuersequenz.
  945. dial
  946.             die letzte Nummer wird noch einmal gewählt.
  947. dial -q
  948.             die letzte Nummer wird ausgegeben. Es wird nichts
  949.             gewählt.
  950.  
  951. Siehe auch:    rsconf
  952.  
  953. -----
  954. df - Belegung der Massespeicher anzeigen
  955.  
  956. Syntax: df [-dnmbf] {Drive}
  957.  
  958. Gibt Informationen über freie und belegte Bytes und Cluster auf den ange-
  959. gebenen oder (falls keine angegeben sind) auf allen angemeldeten Laufwerken.
  960. Nur der erste Buchstabe von Drive ist relevant, d.h. für Informationen über
  961. Laufwerk A: genügt: df a
  962.  
  963. Flag:    -d    Es werden für jedes Laufwerk folgende Daten ausgegeben:
  964.             Anzahl der Cluster,
  965.             Anzahl der Sektoren pro Cluster,
  966.             Anzahl der Bytes pro Sektor,
  967.             Anzahl der freien Cluster.
  968.         Dies entspricht der Rückgabe der Gemdos-Funktion Dfree.
  969.     -n    Es wird keine Überschrift ausgegeben. Wenn -n zusammen
  970.         mit -m angegeben wird, werden die mit `rdti' oder `drives'
  971.         eingestellten Laufwerksbezeichnungen nicht ausgegeben.
  972.     -m    Es wird eine Liste der angeschlossenen Laufwerke ausge-
  973.         geben. -d ist ohne Wirkung. Es werden die mit `rdti'
  974.         oder `drives' eingestellten Laufwerksbezeichnungen aus-
  975.         gegeben, außer wenn -n angegeben ist.
  976.     -b    Wenn nur ein Laufwerk angeschlossen ist, das sowohl als
  977.         A: als auch als B: angesprochen werden kann, werden, wenn
  978.         dieses Flag angegeben ist, bei der Übersicht (auch bei -m)
  979.         die Angaben von A: und von B: ausgegeben (wenn -m nicht
  980.         angegeben ist, ist also ein Diskettenwechsel nötig). Wenn
  981.         -b nicht angegeben ist, werden, wenn nur ein Disketten-
  982.         laufwerk vorhanden ist, keine Angaben über Laufwerk B:
  983.         ausgegeben (auch nicht bei -m).
  984.     -f    Es wird nur die Anzahl der freien Bytes nach StdOut ge-
  985.         schrieben. Mit dieser Option kann z.B. ein Shellscript
  986.         feststellen, ob auf einer Diskette genügend Platz vorhanden
  987.         ist.
  988.  
  989. Beispiel:
  990.     echo Auf Partition C: sind noch `df -f C:` Bytes frei.
  991.  
  992. Rückgabewert: (nur für df -m)
  993.     -1    Aufruffehler.
  994.     sonst    Anzahl der ausgegebenen Laufwerke.
  995.  
  996. Siehe auch:    du
  997.  
  998. -----
  999. dirname - Pfad ermitteln
  1000.  
  1001. Syntax: dirname file
  1002.  
  1003. Es wird der Pfad der Datei ausgegeben.
  1004. Bsp: dirname a:\okami\sh.ttp ergibt a:\okami.
  1005.  
  1006. Siehe auch: basename
  1007.         drvname
  1008.         extname
  1009.         fullname
  1010.  
  1011. -----
  1012. do - SIEHE while
  1013.  
  1014. -----
  1015. done - SIEHE while
  1016.  
  1017. -----
  1018. drive - Laufwerksbezeichnungen festlegen und auslesen
  1019.  
  1020. Syntax: drive ["Drive {Drive}" [String]]
  1021.  
  1022. Mit diesem Kommando kann jedem Laufwerk eine Bezeichnung zugeordnet werden.
  1023. Diese Bezeichnung wird z.B. von dem internen Kommando df ausgegeben.
  1024. Wenn keine Parameter angegeben sind, werden alle vorhandenen Bezeichnungen
  1025. ausgegeben.
  1026. Wenn nur ein Parameter (d.h. ein einziges Wort, ggfs. in doppelten Anführungs-
  1027. zeichen) angegeben ist, so wird jeder Buchstabe dieses Wortes als Laufwerk be-
  1028. trachtet und die Bezeichnung dieses Laufwerks ausgegeben. Zeichen außer A bis
  1029. Z und a bis z werden dabei ignoriert.
  1030. Wenn ein String ausgegeben ist, wird dieser jedem der angegebenen Lauf-
  1031. werke als Laufwerksbezeichnung zugeordnet.
  1032.  
  1033. Beispiele:
  1034. 1) Ausgabe aller Laufwerksbezeichnungen:
  1035.     drive
  1036.  
  1037. 2) Ausgabe der Bezeichnung von Laufwerk A:
  1038.     drive A:
  1039.    oder
  1040.     drive a
  1041.  
  1042. 3) Ausgabe der Bezeichnungen der Laufwerke A,C und G:
  1043.     drive acg
  1044.    oder
  1045.        drive "A: C: G:"
  1046.  
  1047. 4) Setzen der Bezeichnung "Diskette" für Laufwerk A:
  1048.     drive a Diskette
  1049.  
  1050. 5) Setzen der Bezeichnung "Platte" für Laufwerke C bis F:
  1051.     drive cdef Platte
  1052.    oder
  1053.     drive "C D E F" Platte
  1054.    aber nicht
  1055.        drive C D E F Platte
  1056.  
  1057. Eine weitere Möglichkeit, die Laufwerksbezeichnungen zu initialisieren,
  1058. ist das interne Kommando rdti, das die Bezeichnungen direkt aus der
  1059. desktop.inf-Datei lädt.
  1060.  
  1061. -----
  1062. drvname - Laufwerk ermitteln
  1063.  
  1064. Syntax: drvname file
  1065.  
  1066. Es wird der Name des Gerätes von file ausgegeben. Wenn file kein Gerät
  1067. enthält, wird das aktuelle Laufwerk ausgegeben. Achtet nur auf Geräte,
  1068. die mit : angegeben werden, nicht auf Dateien in u:/dev.
  1069. Diese Funktion hat nichts damit zu tun, ob die angegebene Datei oder
  1070. das angegebene Gerät tatsächlich existieren.
  1071.  
  1072. Beispiele:
  1073.  
  1074.  $ drvname a:\okami\sh.ttp
  1075.  a:
  1076.  $ drvname PRT:
  1077.  PRT:
  1078.  $ drvname sh.ttp
  1079.  E:
  1080.  
  1081. (wobei E: das aktuelle Laufwerk ist.)
  1082.  
  1083. Siehe auch: basename
  1084.         dirname
  1085.         extname
  1086.         fullname
  1087.  
  1088. -----
  1089. du - Platten-Platzbedarf ermitteln
  1090.  
  1091. Syntax: du [-brft] {Directory}
  1092.  
  1093. du ermittelt zu jedem der angegebenen Directories den Bedarf an Platten-
  1094. speicherplatz. Das ist die Summe aus den Längen aller in den Directories
  1095. enthaltenen Dateien plus der Platzbedarf aller enthaltenen Subdirectories.
  1096. Außerdem dient du zur baumartigen Darstellung der Ordnerhierarchie.
  1097. Die Ausgabe von du erfolgt in Clustern. Ein Cluster entspricht i.d.R.
  1098. einem Kilobyte auf der Platte, die tatsächliche Größe wird aus dem Bios-
  1099. Parameterblock ermittelt. Der Platzbedarf einer Datei entspricht der Anzahl
  1100. der benötigten Cluster, ist also i.d.R. größer als die Dateilänge.
  1101. Wenn keine Parameter angegeben sind, lautet die Defaulteinstellung "-r .".
  1102. Wenn kein Directory angegeben ist, wird das aktuelle Directory benutzt.
  1103.     
  1104. Flags:
  1105.     -b    Es wird nicht der Platzbedarf in Clustern, sondern die
  1106.         Dateilänge in Bytes errechnet und ausgegeben.
  1107.     -r    Es wird nur der Platzbedarf der angegebenen Directories
  1108.         ausgegeben. Wenn dieses Flag nicht angegeben ist, wird auch
  1109.         der Platzbedarf aller enthaltenen Subdirectories ausgegeben.
  1110.     -f    Es wird zusätzlich der Platzbedarf aller enthaltenen Dateien
  1111.         ausgegeben. Wenn dieses Flag nicht angegeben ist, wird nur
  1112.         der Platzbedarf von Directories ausgegeben.
  1113.         Wenn -t angegeben ist, hat dieses Flag die umgekehrte Wirkung:
  1114.         es werden dann keine Dateien, sondern nur Directories ausge-
  1115.         geben. Dies ist nützlich für einen schnellen Überblick über
  1116.         die Ordnerstruktur.
  1117.     -t    erzeugt eine baumartige Ausgabe der Ordnerstruktur. Die Flags
  1118.         -b und -r sind ohne Wirkung.
  1119.  
  1120. Beispiele:
  1121.  
  1122. du /okami    ergibt: (Angaben in Cluster)
  1123.         1        bin
  1124.         615      doc
  1125.         74       ok_demo\doc
  1126.         125      ok_demo
  1127.         2000     \okami
  1128.  
  1129. du -b /okami    ergibt: (Angaben in Bytes)
  1130.         292      bin
  1131.         617210    doc
  1132.         73148    ok_demo\doc
  1133.         121683    ok_demo
  1134.         1978543    \okami
  1135.  
  1136. du -r /okami    ergibt: (nur das angegebene Directory)
  1137.         2000     e:\okami
  1138.  
  1139. du -f /okami    ergibt: (Ausgabe mit allen Dateien) (Ausschnitt)
  1140.         36       cmds2.c
  1141.         27       utl4.c
  1142.         48       sh.c
  1143.         1        bin\ship.exe
  1144.         1        bin
  1145.         2000     \okami
  1146.  
  1147. du -t /okami    ergibt: (Ausgabe als Baum mit Dateien) (Ausschnitt)
  1148.         okami\
  1149.             cmds2.c
  1150.             utl4.c
  1151.             sh.c
  1152.             bin\
  1153.                 ship.exe
  1154. du -tf /okami    ergibt: (dito ohne Dateien)
  1155.         okami\
  1156.             bin\
  1157.             doc\
  1158.             ok_demo\
  1159.                 doc\
  1160.  
  1161. Siehe auch:    df
  1162.  
  1163. -----
  1164. echo - Zeichenketten ausgeben
  1165.  
  1166. Syntax: echo String
  1167.  
  1168. Schreibt String nach StdOut. String kann leer sein, d.h. echo ohne Para-
  1169. meter schreibt eine Leerzeile nach StdOut.
  1170. In dem String sind folgende Sonderzeichen erlaubt:
  1171. ^n    erzeugt ein Newline-Zeichen (in C: '\n')
  1172. ^t    erzeugt ein Tabulator-Zeichen (in C: '\t')
  1173. ^b    erzeugt ein Backspace-Zeichen (in C: '\b')
  1174. ^a    erzeugt ein Klingenzeichen (in C: '\a')
  1175. ^ooo    wobei ooo eine dreistellige Oktalzahl ist: erzeugt das Zeichen
  1176.     mit dem Ascii-Code ooo.
  1177.     Beipiel: echo ^033pHallo^033q schreibt Hallo in invertierter Schrift.
  1178. ^;    erzeugt ein Semikolon, das nicht als Trenner von Kommandos wirkt.
  1179.     Siehe unten.
  1180. ^>
  1181. ^<
  1182. ^|
  1183. ^`    erzeugen analog dazu Größer-, Kleiner-, Pipe- und Accent Grave-Zei-
  1184.     chen, die nicht    die Ein/Ausgabeumleitung bzw. Command Substitution
  1185.     bewirken.
  1186. ^c    am Ende des Strings verhindert den Zeilenvorschub, d.h. der Cursor
  1187.     bleibt am Ende der Zeile.
  1188. ^x    wobei x ein beliebiges Zeichen ausser n, t, c, 0..7 ist: erzeugt
  1189.     das Zeichen x. Dies ist nuetzlich zum Beenden von Variablenauf-
  1190.     rufen. Beispiel:
  1191.  
  1192.     VAR=Halli
  1193.     echo $VARHallo        gibt den Wert der Variable VARHallo aus
  1194.     echo $VAR^Hallo     gibt die Ausgabe HalliHallo.
  1195.  
  1196. ^^    erzeugt ein Hoch-Zeichen.
  1197.  
  1198. Achtung: Whitespace-Zeichen wie ^t und ^n müssen in doppelten Anführungs-
  1199. zeichen (") stehen, um wirksam zu werden.
  1200.  
  1201. Diese Sonderzeichen gelten nicht nur bei der Angabe von Parametern des echo-
  1202. Kommandos, sondern für alle Kommandos.
  1203.  
  1204. Das Hoch-Zeichen hat also die Funktion, die im herkoemmlichen UNIX-"echo"
  1205. der Backslash hat. Unter TOS wird der Backslash allerdings (in MS-DOS-
  1206. Konvention) als Trennzeichen zwischen Pfad(en) und Dateinamen benutzt
  1207. (wofür es in UNIX den normalen Slash gibt). Daher wird in der Okami-Shell
  1208. der Backslash durch das Hoch-Zeichen ersetzt. Deswegen muß man in der
  1209. Okami-Shell darauf verzichten, das Hoch-Zeichen anstelle des Pipe-Symbols
  1210. (|) zu benutzen, was in Unix teilweise üblich ist.
  1211.  
  1212. Beispiele:
  1213.  
  1214. 1) Ausgabe des aktuellen Directories:
  1215.     echo Das aktuelle Directory ist $CWD
  1216.         
  1217. 2) Ausgabe von VT52-Sequenzen:
  1218.     echo ^033e        schaltet den Cursor ab
  1219.     echo ^033H        setzt den Cursor auf Home-Position etc.
  1220.  
  1221. 3) Ausgabe eines Semikolons:
  1222.     echo Hallo ; ls -l    schreibt "Hallo" und führt das Kommando
  1223.                 "ls -l" aus.
  1224.     echo Hallo ^; ls -l    schreibt "Hallo ; ls -l".
  1225.  
  1226. 4) Benutzung der Sonderzeichen in anderen Shellkommandos: Einstellen eines
  1227.    Shellprompts, das aus dem String "Eingabe: >" in invertierter Schrift
  1228.    besteht; vor jedem Prompt soll ein Signalton erzeugt werden.
  1229.     PS1="^007^033pEingabe: ^>^033q"
  1230.  
  1231. -----
  1232. egrep - SIEHE grep
  1233.  
  1234. -----
  1235. else - SIEHE if
  1236.  
  1237. -----
  1238. env - gibt das Shell-Environment aus
  1239.  
  1240. Syntax: env
  1241.  
  1242. Die der Shell übergebenen Environment-Strings werden nach StdOut ausgegeben.
  1243. Nach jedem String wird ein Newline-Zeichen eingefügt.
  1244. Dieses Kommando arbeitet ausschließlich auf dem der Shell übergebenen
  1245. Environment, was bedeutet, daß nach dem Start der Shell exportierte Shell-
  1246. variablen nicht mit ausgegeben werden. Um alle exportierten Shellvariablen
  1247. auszugeben, gibt es das Kommando `vars -ex'.
  1248.  
  1249. Siehe auch:    export
  1250.         vars
  1251.  
  1252. -----
  1253. errcode - analysiert Fehlernummern
  1254.  
  1255. Syntax: errcode {Fehlernummer|errno}
  1256.  
  1257. errcode liefert zu einer Bios-, XBios- oder Gemdos-Fehlernummer einen er-
  1258. klärenden Text. Als Fehlernummer kan jede beliebige Zahl oder das Wort
  1259. "errno" angegeben sein, in letzterem Fall wird der Wert der internen Fehler-
  1260. variablen errno benutzt. Fehlernummern können positiv oder negativ angegeben
  1261. werden; da das Betriebssystem nur negative Fehlernummern benutzt, werden posi-
  1262. tive Nummern negiert. Die Ausgabe hat die Form
  1263.     Nummer: Text
  1264. Die Nummer wird dezimal ausgegeben und entspricht dem jeweiligen Parameter
  1265. oder dem Inhalt von errno. Der Text ist eine Kurzdefinition der Nummer. Bei
  1266. einer unbekannten Nummer lautet der Text "???".
  1267. Die Voreinstellung, wenn keine Parameter angegeben sind, lautet "errno".
  1268.  
  1269. -----
  1270. exec - Eine Datei als Binärprogramm ausführen
  1271.  
  1272. Syntax: exec [-(l|b|a|e)g] Dateiname {Parameter}
  1273. oder    exec -x Basepage-Adresse {Parameter}
  1274.  
  1275. Dient zum Laden oder Starten einer Datei als Binär-Programmdatei. Entspricht
  1276. der Gemdos-Funktion "Pexec".
  1277. Es muß der vollständige Dateiname (relativ oder absolut) angegeben werden.
  1278. Die Shellvariablen PATH und XEXT sind ohne Wirkung. Die Shellvariable GEXT
  1279. entscheidet, ob das Programm als GEM-Programm starten soll. Wenn das Flag -g
  1280. angegeben ist, wird das Programm nicht über die Shellfunktion gemexec ausge-
  1281. führt, auch wenn der Extender in $GEXT aufgeführt ist. Dies ist die Art und
  1282. Weise, mit der gemexec Programme ausführt.
  1283. Wenn das Flag -x angegeben ist, werden Programme, die zuvor mit -l geladen
  1284. wurden, gestartet. Dazu muß die von -l ermittelte Basepage-Adresse über-
  1285. geben werden.
  1286. Wenn das Flag -a angegeben ist, wird das Programm als Hintergrundprozeß
  1287. gestartet.
  1288. Wenn das Flag -e angegeben ist, wird die Shell durch den neuen Prozeß
  1289. überlagert. Das bedeutet, daß die Shell keine Deinitialisierung, insb.
  1290. Abarbeitung des trap-Strings, mehr durchführt, daß ein Shellscript, in
  1291. dem exec -e steht, nicht zuende ausgeführt wird usw. exec -e entspricht
  1292. also dem exec der Original-Unix-Shell.
  1293.  
  1294. -e und -a sind nur dann sinnvoll, wenn Mint installiert ist. Wenn Mint nicht
  1295. installiert ist, wird -a ignoriert, und nach einem Aufruf mit -e wird die
  1296. Shell beendet (ebenfalls ohne Deinitialisierung).
  1297.  
  1298. Achtung: Wenn Flags angegeben sind, so müssen sie zu Beginn, also vor dem
  1299. Dateinamen stehen und dürfen nicht durch Leerzeichen getrennt sein.
  1300.  
  1301. Beispiele:
  1302. 1)    exec datei.ttp p1 p2 p3
  1303.         lädt und startet die Datei datei.ttp im aktuellen Verzeich-
  1304.         nis. Der String "p1 p2 p3" wird als Parameterzeile über-
  1305.         geben.
  1306. 2)    exec datei.prg
  1307.         Wenn der Extender .prg in der Shell-Variablen GEXT gespeichert
  1308.         ist, wird die Datei datei.prg über die Shellfunktion gemexec
  1309.         ausgeführt, ansonsten wird sie geladen und gestartet.
  1310. 3)    exec -g datei.prg
  1311.         Die Datei datei.prg wird geladen und gestartet, auch wenn der
  1312.         Extender .prg in GEXT gespeichert ist. Die Funktion gemexec
  1313.         wird also nicht aufgerufen.
  1314. 4)    exec datei.prg -g
  1315.         wie 2), aber es wird die Zeichenkette "-g" an das Programm
  1316.         übergeben.
  1317. 5)    exec -l datei.ttp
  1318.         Die Datei wird geladen. Die Startadresse der Basepage des
  1319.         Programms wird in hexadezimaler Schreibweise auf den Bild-
  1320.         schirm geschrieben. Die Adresse der Basepage kann mit
  1321.         exec -x oder dem Kommando basep weiterverarbeitet werden.
  1322.         Das Angeben von Parametern ist möglich, aber nicht sinnvoll,
  1323.         da diese beim Start des Programms mit exec -x überschrieben
  1324.         werden.
  1325. 6)    exec -b datei.ttp p1 p2 p3
  1326.         wie 2), aber es wird die Basepage des Programms erzeugt.
  1327. 7)    exec -x 0x65abc file.c
  1328.         Die zuvor mit exec -l geladene Datei datei.ttp wird ge-
  1329.         startet. Die Zeichenkette `file.c' wird als Parameter
  1330.         übergeben. exec -l sollte die Ausgabe "0x65ABC" erzeugt haben.
  1331. 8)    exec -e c:/bin/cc.ttp test.c -o test.o
  1332.         Die Shell startet das angegebene Programm, indem sie sich
  1333.         selber mit diesem Programm überlagert.
  1334.  
  1335. VORSICHT: Wenn bei der Verwendung von exec -x eine falsche Adresse angege-
  1336. ben wird, ist ein Absturz der Shell möglich. Es sollte nur eine Adresse
  1337. verwendet werden, die zuvor mit exec -l ermittelt wurde.
  1338.  
  1339. Siehe auch:    basep
  1340.         gemexec
  1341.  
  1342. -----
  1343. Exit - siehe exit
  1344.  
  1345. -----
  1346. exit , Exit - Beendet die Shell oder ein Shellscript
  1347.  
  1348. Syntax: exit|Exit
  1349.  
  1350. Im Dialogmodus beenden beide Kommandos die Shell. Hat dieselbe Wirkung wie
  1351. ein Druck auf Ctrl-D in der Kommandoeingabe.
  1352. Nach einem exit wird folgendes getan:
  1353. 1) ein evtl. mit trap definiertes Kommando wird ausgeführt.
  1354. 2) wenn gon eingegeben worden ist, aber noch kein goff, wird goff aufgerufen.
  1355. 3) alle von der Shell belegten Speicherbereiche werden freigegeben.
  1356. 4) wenn das Shellflag s gesetzt ist, wird das aktuelle Verzeichnis in die
  1357.    Datei $HOME\wdir gespeichert und diese Datei unsichtbar gemacht.
  1358. 5) die DTA wird auf den Zustand vor dem Start der Shell zurückgestellt.
  1359. 6) der Eintrag im Cookiejar wird entfernt und ggfs. der Speicherbereich des
  1360.    Cookiejars freigegeben.
  1361. 7) alle evtl. noch offenen Umleitungsdateien werden geschlossen.
  1362. 8) das Programm wird beendet.
  1363.  
  1364. Wenn das Kommando exit in einem Shellscript steht, wird nur das Shellscript
  1365. beendet. Es wird keine der oben angeführten Aktionen durchgeführt.
  1366. Wenn das Kommando Exit in einem Shellscript steht, wird die Shell wie
  1367. oben beschrieben beendet.
  1368.  
  1369. Beispiele:
  1370.  
  1371. 1. Beenden eines Shellscripts unter einer bestimmten Bedingung. Die Shell,
  1372. die dieses Script ausführt, läuft weiter.
  1373.  
  1374.     echo Dateiname?
  1375.     read FILE
  1376.     if [ -f $FILE ]
  1377.     then
  1378.       echo $FILE existiert nicht!
  1379.       exit
  1380.     end
  1381.  
  1382. 2. Beenden der Shell aus einem Shellscript heraus. Wenn der Benutzer das
  1383. falsche Passwort eingibt, wird die Shell beendet, man landet also
  1384. wieder im Desktop.
  1385.  
  1386.     echo Passwort?
  1387.     read PASSWD
  1388.     if [ $PASSWD != $SECRET ]
  1389.     then
  1390.       echo Falsches Passwort!
  1391.       Exit
  1392.     fi
  1393.  
  1394. -----
  1395. export - Shell-Variablen für das Environment markieren
  1396.  
  1397. Syntax: export [[-] {Variable}]
  1398.  
  1399. Alle als exportiert markierten Shellvariablen werden beim Start eines
  1400. Binärprogrammes als Environment in die Basepage des neuen Programmes ein-
  1401. getragen. Dadurch ist es möglich, eine Umgebung zu schaffen, die beim 
  1402. Start weiterer Programme erhalten bleibt.
  1403. Beim Aufruf ohne Parameter wird eine Liste aller exportierter Variablen
  1404. ausgegeben.
  1405. Beim Aufruf mit den Namen von mindestens einer Shellvariablen werden alle
  1406. angegebenen Variablen als exportiert markiert. Wenn Variablen angegeben
  1407. werden, die noch nicht existieren, so werden diese mit einem leeren Wert
  1408. angelegt und exportiert.
  1409. Die Namen der Variablen können dabei im Format der erweiterten Wildcards
  1410. angegeben werden, z.B. "export a*" exportiert alle Variablen, deren Name
  1411. mit a beginnt. Näheres siehe okami.doc.
  1412.  
  1413. Flag:    -    Bei den angegebenen Variablen wird die Exporiert-Markierung
  1414.         gelöscht. Damit können Variablen aus dem Environment ent-
  1415.         fernt werden.
  1416.  
  1417. Beispiel:
  1418.     PS1="Eingabe:"            ändert das Shell-Prompt
  1419.     export PS1            Übernahme von PS1 ins Environment
  1420.     sh                eine weitere Shell starten
  1421.     echo $PS1            es erscheint "Eingabe:", da die
  1422.                     Variable PS1 aus dem Environment
  1423.                     eingestellt wurde.
  1424.     exit                die Subshell beenden
  1425.     export - PS1            entfernt PS1 aus dem Environment
  1426.  
  1427. Wenn das Shell-Flag e gesetzt ist, werden alle geänderten Variablen
  1428. automatisch exportiert, der explizite Aufruf von export ist dann also
  1429. nicht notwendig.
  1430.  
  1431. Siehe auch:    env
  1432.         readonly
  1433.         vars
  1434. Zum Format des Environments siehe okami.doc.
  1435.  
  1436. -----
  1437. extname - Dateinamen-Extender ermitteln
  1438.  
  1439. Syntax: extname filename
  1440.  
  1441. Der Extender des angegebenen Filenamen wird nach StdOut geschrieben (incl.
  1442. dem Punkt vor dem Extender). Wenn der Dateiname keinen Extender hat, wird
  1443. nur ein Zeilenvorschub ausgegeben.
  1444. Dies ist eine reine Stringfunktion, das Ergebnis ist unabhängig von der
  1445. Einstellung des Shell-Flags l (siehe set) und davon, ob die angegebene Datei
  1446. existiert oder nicht.
  1447.  
  1448. Beispiele:
  1449.     extname d:/shell/sh.ttp     erzeugt die Ausgabe ".ttp".
  1450.     extname profile            erzeugt einen Zeilenvorschub.
  1451.     EXT=`extname hallo.txt`        einlesen in eine Variable.
  1452.  
  1453. Siehe auch: basename
  1454.         dirname
  1455.         drvname
  1456.         fullname
  1457.  
  1458. -----
  1459. false - Rückgabe von 0
  1460.  
  1461. Syntax: false
  1462.  
  1463. Dieses Kommando gibt immer eine 0 zurück. Es wird normalerweise mit while
  1464. oder if verwendet.
  1465.  
  1466. Beispiel: Ausblenden eines Teiles eines Shellscripts. Durch "true" anstelle
  1467. von "false" kann der Teil wieder aktiviert werden.
  1468.  
  1469.         if false
  1470.         then
  1471.           ............. (irgendwelche Kommandos)
  1472.         fi
  1473.  
  1474. Siehe: if
  1475.        while
  1476.        true
  1477.  
  1478. -----
  1479. fcts - Shellfunktionen auflisten
  1480.  
  1481. Syntax: fcts [-l]
  1482.  
  1483. Es wird eine Liste aller Shellfunktionen ausgegeben. Zu jeder Funktion er-
  1484. scheint eine Zeile der Form:
  1485.  
  1486.     365  hallo()
  1487.  
  1488. Die Zahl ist die Größe der Funktion in Bytes.
  1489. Nach der Liste wird eine Statistik ausgegeben, die folgende Angaben umfaßt:
  1490.     Summe der Größen aller Funktionen,
  1491.     Anzahl der Funktionen,
  1492.     Maximalanzahl der zu definierenden Funktionen,
  1493.     prozentuelle Belegung der Funktionstabelle.
  1494.  
  1495. Wenn das Flag -l angegeben ist, werden stattdessen die Definitionen aller
  1496. Shellfunktionen ausgegeben, und zwar in einem Format, das später zur Ins-
  1497. tallation der Shellfunktionen benutzt werden kann.
  1498.  
  1499. Beispiel:
  1500.  
  1501.     trap +fcts -l ^>$ETC/fcts.sh
  1502.  
  1503. schreibt bei Ende der Shell die Definitionen aller Funktionen in die Datei
  1504. $ETC/fcts.sh . Mit der folgenden Zeile im Profile:
  1505.  
  1506.     . $ETC/fcts.sh
  1507.  
  1508. werden die Funktionen dann wieder geladen und so auf die alten Werte einge-
  1509. stellt.
  1510.  
  1511. -----
  1512. fgrep - SIEHE grep
  1513.  
  1514. -----
  1515. fi - SIEHE if
  1516.  
  1517. -----
  1518. find - Dateien suchen
  1519. Syntax:    find Dir {Dir} {Bedingung}
  1520.  
  1521. Durchsucht alle angegebenen Directories nach Dateien, die den angegebenen
  1522. Bedingungen genügen.
  1523. Folgende Bedingungen können angegeben werden:
  1524.  
  1525.     -name "Pat"    trifft zu, wenn der Basisname der Datei auf
  1526.             das Wildcard-Muster Pat paßt. Wenn -name
  1527.             nicht angegeben ist, wird "-name *" ange-
  1528.             nommen, es werden also alle Dateien benutzt.
  1529.     -type String    trifft zu, wenn die Dateiattribute den in String
  1530.             angegebenen entsprechen. Die Zeichen in String
  1531.             entsprechen den bei "ls -l" und "chmod" verwendeten.
  1532.     -depth n    gibt die Suchtiefe an. Der Dateibaum wird bis zu
  1533.             einer Tiefe von n verschachtelten Directories
  1534.             durchsucht. Bei n=0 bleibt die Suche auf das
  1535.             aktuelle Directory beschränkt, bei n<0 wird
  1536.             beliebig tief gesucht.
  1537.     -print        trifft immer zu und sorgt dafür, daß die ge-
  1538.             fundenen Dateien auf stdout ausgegeben werden.
  1539.             find erzeugt keine Ausgabe, wenn -print nicht
  1540.             angegeben ist.
  1541.     -exec "Cmd"    trifft immer zu und sorgt dafür, daß für jede
  1542.             gefundene Datei das angegebene Kommando ausge-
  1543.             führt wird. In Cmd wird der String {} durch
  1544.             den Namen der betreffenden Datei ersetzt.
  1545.     -ok "Cmd"    wie -exec, aber der Anwender wird vorher gefragt,
  1546.             ob das Kommando ausgeführt werden soll.
  1547.  
  1548. Die Bedingungen werden als mit logischem Und verknüpft betrachtet.
  1549.  
  1550. Beispiele:
  1551.  
  1552. 1) Auflisten aller Dateien auf einer Partition:
  1553.     find c:/ -print
  1554.  
  1555. 2) Auflisten aller C-Dateien ab den aktuellen Directory:
  1556.     find . -name *.c -print
  1557.  
  1558. 3) Auflisten aller Unterdirectories von /usr/include:
  1559.     find /usr/include -type d -print
  1560.  
  1561. 4) Auflisten aller Directories im aktuellen Directory:
  1562.     find . -type d -depth 0 -print
  1563.  
  1564. 5) Löschen aller .bak-Dateien auf den Partitionen C:, D: und E:
  1565.     find c:/ d:/ e:/ -name "*.bak" -exec "rm {}"
  1566.  
  1567. Die Verwendung dieses Kommandos ist nützlich mit Kommandos, die von ihrer
  1568. Eingabe Dateinamen einlesen (z.B. backup).
  1569.  
  1570. Für einfachere Dateisuch-Aufgaben kann das Kommando seek verwendet werden.
  1571. "seek Dir Pattern" entspricht "find Dir -name Pattern -print".
  1572.  
  1573. -----
  1574. fsel - eine Datei mit der Fileselect-Box auswählen
  1575.  
  1576. Syntax: fsel [Pfad [Default [Variable [Label]]]]
  1577.  
  1578. Es wird die AES-Fileselect-Box aufgerufen, um eine Datei auszuwählen,
  1579. deren Name nach StdOut geschrieben wird. Damit dieser Aufruf funktioniert,
  1580. muß die Shell als GEM-Applikation angemeldet werden. Dies geschieht mit
  1581. dem Kommando gon, das vor fsel aufgerufen werden muß.
  1582.  
  1583. In Pfad kann der Suchpfad und das Suchmuster der darzustellenden Dateien
  1584. angegeben werden. In Default kann der als ausgewählt voreinzustellende
  1585. Dateiname angegeben werden. Label ist die Überschrift für die Fileselect-
  1586. Box. Die Angabe einer Überschrift ist erst ab TOS 1.4 möglich, bei älteren
  1587. TOS-Versionen ist dieser Parameter ohne Wirkung. Wenn Label Leerzeichen
  1588. enthält, muß es in Anführungszeichen eingeschlossen sein.
  1589. Achtung: da die Pfadangabe nicht von der Shell, sondern vom AES ausge-
  1590. wertet wird, dürfen hier nur Gemdos-Wildcards benutzt werden.
  1591. Wenn Pfad, Default oder Label nicht angegeben sind, lautet die Voreinstellung:
  1592.  
  1593.     Pfad    = ".\*.*"    (alle Dateien im aktuellen Directory)
  1594.     Default = ""        (keine Voreinstellung)
  1595.     Label   = "Okami Shell"
  1596.  
  1597. Wenn der Anwender die Abbruch-Taste der Fileselect-Box anwählt, gibt fsel
  1598. eine 0 zurück, ansonsten eine 1. Dieser Rückgabewert kann in der Shell-
  1599. variablen "?" abgefragt werden.
  1600. Wenn als dritter Parameter eine Variable angegeben ist, wird der Rück-
  1601. gabewert (0 bei Abbruch, 1 sonst) auch in dieser Variablen abgelegt.
  1602. Wenn dieser Parameter, nicht aber der zweite benutzt wird (weil keine Vor-
  1603. einstellung gewünscht ist), muß der zweite Parameter . (Punkt) oder ""
  1604. (zwei doppelte Anführungszeichen) lauten.
  1605.  
  1606. Beispiele:
  1607.     gon            muß immer zuerst kommen
  1608.     fsel            Auswahl aus allen Dateien im aktuellen Dir.
  1609.     fsel *.c        Auswahl aus allen C-Dateien
  1610.     fsel e:\shell\*.c    Auswahl aus den C-Dateien in e:\shell
  1611.     A=`fsel *.c`        Einlesen in eine Variable
  1612.     echo $?         Ausgabe von 0, falls Abbruch, 1 sonst
  1613.     fsel *.c sh.c VAR
  1614.     echo $VAR        Ergebnis in eine Variable speichern
  1615.     fsel *.c sh.c VAR "Bitte eine Datei auswählen"
  1616.                 Benutzung der Überschrift
  1617.  
  1618. Da die Fileselect-Box den von ihr benutzten Bildschirmbereich nicht wieder
  1619. restauriert, speichert fsel den gesamten Bildschirm vor dem Aufruf der
  1620. Fileselect-Box ab. Daher müssen beim Aufruf von fsel mindestens 32000
  1621. Bytes an freiem Speicher verfügbar sein.
  1622.  
  1623. Rückgabewert:
  1624.     1    Abbruch angewählt.
  1625.     0    Ok angewählt.
  1626.  
  1627. -----
  1628. fullname - Absoluten Dateinamen ermitteln
  1629.  
  1630. Syntax: fullname file
  1631.  
  1632. Ermittelt den vollen, absoluten Dateinamen der angegebenen Datei. Der abso-
  1633. lute Dateiname ist von dem Format
  1634.     Laufwerk ":\" Pfad "\" Dateiname
  1635. z.B. "d:\shell\sh.ttp". Es ist ohne Bedeutung, ob eine Datei mit dem ange-
  1636. gebenen Namen existiert.
  1637.  
  1638. Beispiele: Es sei D: das aktuelle Laufwerk, d:\shell das aktuelle Directory
  1639. von Laufwerk D: und c:\compiler\cc das aktuelle Laufwerk von Laufwerk C:.
  1640.  
  1641.     fullname von...         ergibt...
  1642.  
  1643.     c:\files\hallo.txt        c:\files\hallo.txt
  1644.     c:test.c            c:\compiler\cc\test.c
  1645.     sh.ttp                d:\shell\sh.ttp
  1646.     \sh.ttp             d:\sh.ttp
  1647.     bin\ship.exe            d:\shell\bin\ship.exe
  1648.  
  1649. Siehe auch: basename
  1650.         dirname
  1651.         drvname
  1652.         extname
  1653.  
  1654. -----
  1655. gemexec - Shellfunktion zum Starten von GEM-Programmen
  1656.  
  1657. Syntax: Programmname {Parameter}
  1658.  
  1659. Bei gemexec handelt es sich um eine Shellfunktion, die nicht direkt vom Be-
  1660. nutzer, sondern von der Shell selber aufgerufen wird. Der Sinn der Sache ist,
  1661. manche Programme, insbesondere GEM-Programme, unter besonderen Bedingungen
  1662. aufzurufen. Wenn ein GEM-Programm aufgerufen wird, soll z.B. vorher der Bild-
  1663. schirm gelöscht, der Cursor ab- und die Maus eingeschaltet werden, und nach
  1664. dem Ende des Programms soll der Bildschirm wieder gelöscht werden. Um diese
  1665. Prozedur möglichst flexibel und vom Anwender konfigurierbar zu gestalten, wer-
  1666. den GEM-Programme (das sind per Definition alle externen Kommandos, deren
  1667. Extender in der Shellvariablen GEXT gespeichert sind) über die Shellfunktion
  1668. gemexec ausgeführt. Diese Funktion kann alle weiteren Aktionen durchführen und
  1669. ist auch dafür verantwortlich, daß das Programm überhaupt gestartet wird.
  1670.  
  1671. Nach dem Start der Shell wird die Funktion folgendermaßen initialisiert:
  1672.  
  1673.     gemexec()
  1674.     {
  1675.       _=$0 $*
  1676.       cursor -v;scr -g
  1677.       exec -g $_
  1678.       cls
  1679.       _=
  1680.     }
  1681.  
  1682. Beim Aufruf der Funktion gemexec enthält die Shellvariable $0 nicht den Namen
  1683. der Funktion, sondern den vollständigen Pfadnamen des aufzurufenden Programms.
  1684. Die Shellvariable $* enthält die zu übergebenen Parameter. Die Funktion kann 
  1685. kann vom Anwender beliebig verändert werden, aber um das betreffende Programm
  1686. ordnungsgemäß aufzurufen, sollte sie zumindest folgendes tun:
  1687.  
  1688.     1) Speichern von $0 und $* in einer Shellvariablen, hier: _
  1689.     2) Durchführung aller Aktionen vor Programmstart, hier: cls und
  1690.        cursor -v (Bildschirm löschen und Cursor abschalten).
  1691.     3) Aufruf des Programms mit dem Kommando "exec -g $_"
  1692.        Anstelle von $_ kann die in 1) benutzte Variable, aber
  1693.        auch andere Werte stehen.
  1694.        ACHTUNG: Beim Aufruf von exec muß UNBEDINGT das Flag -g angegeben
  1695.        werden!!!!! Ansonsten wird exec die Funktion gemexec nochmal mit
  1696.        denselben Parametern aufrufen => infinite Rekursion.
  1697.     4) Die Freigabe der Variablen (hier: _) ist nicht unbedingt notwendig,
  1698.        da sie immer wieder verwendet wird.
  1699.  
  1700. Die Funktion gemexec kann wie jede Shellfunktion programmiert werden, was be-
  1701. deutet, daß sie auch Kontrollstrukturen wie if und while beinhalten kann. Sie
  1702. kann den in $0 übergebenen Programmnamen mit basename und extname analysieren
  1703. und entsprechende Operationen durchführen. Sie muß nicht unbedingt das Pro-
  1704. gramm, daß in $0 übergeben wird, ausführen; dadurch ist es möglich, etwas
  1705. völlig anderes als ein Programm auf diese Weise aufzurufen.
  1706.  
  1707. In der Datei tricks.doc befindet sich eine gemexec-Funktion, die nach dem
  1708. Ende eines GEM Programms den Bildschirm wieder so herstellt, wie er vor dem
  1709. Aufruf war, sowie eine, die das "Anwendung anmelden" des Desktop simuliert.
  1710.  
  1711. Siehe auch:    exec
  1712.         den Abschnitt über gemexec in tricks.doc
  1713.  
  1714. -----
  1715. getscr - Bildschirminhalt laden und sichern
  1716.  
  1717. Syntax: getscr [-[Header] Dateiname]
  1718.  
  1719. Der Bildschirminhalt wird in einem internen Speicherbereich gesichert. Er
  1720. kann mit dem Kommando putscr wiederhergestellt werden.
  1721. Wenn das Flag - angegeben ist, wird der Bildschirminhalt aus der angegebenen
  1722. Datei gelesen. Dazu kann die Länge eines Headers angegeben werden, der über-
  1723. lesen wird. Wenn kein Header angegeben wird, wird kein Header überlesen.
  1724.  
  1725. Durch nochmaligen Aufruf von getscr wird der zuvor gespeicherte Bildschirm
  1726. überschrieben.
  1727.  
  1728. Beispiel:
  1729.     getscr
  1730.             Sichern des aktuellen Bildschirminhaltes
  1731.     getscr - <picture.doo
  1732.             Laden eines Doodle-Bildes (32000 Bytes)
  1733.     getscr -34 <picture.pi3
  1734.             Laden eines Degas-PI3-Bildes (32066 Bytes)
  1735.  
  1736. Siehe: putscr
  1737.        showpic (externes Kommando)
  1738.  
  1739. -----
  1740. goff - Abmeldung von AES
  1741.  
  1742. Syntax: goff
  1743.  
  1744. Die Shell meldet sich als Applikation vom AES ab, und der Bildschirm wird
  1745. gelöscht. Wird beim Beenden der Shell mit `exit' bei Bedarf automatisch
  1746. ausgeführt.
  1747. Wenn vor der Eingabe von goff nicht gon eingegeben worden ist, erscheint
  1748. stattdessen eine Fehlermeldung.
  1749.  
  1750. Siehe: gon
  1751.  
  1752. -----
  1753. gon - Anmeldung bei AES
  1754.  
  1755. Syntax: gon [-q]
  1756.  
  1757. Die Shell meldet sich bei GEM als Applikation an und initialisiert den
  1758. Pfadnamen des Clipboards. gon öffnet eine Virtual Workstation und ini-
  1759. tialisiert daraus die von da an von der Shell benutzten Werte für die
  1760. Bildschirmauflösung (Grafik und Text) sowie die Größe des Bildschirm-
  1761. speichers. Die zu Beginn der Shell initialisierten Werte gehen von einer
  1762. Bildauflösung von 640x400 Pixeln und 80x25 Zeichen sowie einem Bildschirm-
  1763. speicherbedarf von 32000 Bytes aus.
  1764. gon liest (mit der AES-Funktion scrp_read) den Pfadnamen des installierten
  1765. Clipboards. Falls ein solcher definiert ist, wird er in der Shellvariablen
  1766. CLIPDIR abgelegt. Falls nicht, wird umgekehrt der Inhalt von CLIPDIR als
  1767. Clipboard-Pfad installiert (mit scrp_write).
  1768.  
  1769. Dieses Kommando ist nützlich bei der Verwendung von GEM-Applikationen.
  1770. Außerdem muß es vor der Verwendung einiger interner Kommandos (z.B. fsel
  1771. und mouse) benutzt werden.
  1772. Außerdem hat gon folgende Konsequenzen:
  1773. 1) die Tastatureingabe läuft über die AES-Funktion evnt_keybd statt über
  1774.    die Gemdos-Funktion Crawcin,
  1775. 2) das Kommando sleep benutzt die AES-Funktion evnt_timer statt einer
  1776.    Warteschleife.
  1777. Daraus ergibt sich, daß Accessories, die im Multitasking-Betrieb laufen,
  1778. bei aktiviertem gon während der Tastatureingabe und dem sleep-Kommando
  1779. aktiviert werden. Ein Accessory, das laufend die Uhrzeit auf den Bild-
  1780. schirm schreibt, tut dies also während der Tastatureingabe, wenn gon
  1781. aktiv ist. Dasselbe gilt für andere Hintergrund-Accessories wie Drucker-
  1782. spooler o.ä.
  1783. Die Tastaturpufferung funktioniert jedoch trotzdem, da die Tastaturein-
  1784. gaberoutine erst den Tastenpuffer ausliest, bevor sie weitere Tasten mit
  1785. evnt_keybd einliest.
  1786.  
  1787. Wird gon mehrfach hintereinander aufgerufen, ohne daß zwischendurch goff
  1788. aufgerufen wird, erscheint eine Fehlermeldung.
  1789.  
  1790. Wenn das Flag -q angegeben ist, meldet sich die Shell nicht als Applikation
  1791. an, sondern es wird folgender Rückgabewert (in $?) zurückgeliefert:
  1792.     1    wenn gon bereits aktiviert ist,
  1793.     0    sonst.
  1794. Um Fehlermeldungen zu vermeiden, sollten Shellscripts, die mit Kommandos, die
  1795. gon erfordern (z.B. fsel), folgendermaßen vorgehen:
  1796.  
  1797.     gon -q
  1798.     GONSTAT=$?
  1799.     if [ $GONSTAT = 0 ]
  1800.     then
  1801.       gon
  1802.     fi
  1803.     
  1804.     ...................... andere Kommandos
  1805.     
  1806.     if [ $GONSTAT = 0 ]
  1807.     then
  1808.       goff
  1809.     fi
  1810.     unset GONSTAT
  1811.  
  1812. Auf diese Weise wird der Status von gon (aktiv oder nicht) in einer Variablen
  1813. (GONSTAT) gespeichert und benutzt, um gon ggfs. zu aktivieren und später wieder
  1814. zu deaktivieren.
  1815. Es wird empfohlen, gon als eines der ersten Kommandos im Profile aufzurufen.
  1816. Wenn die Shell aus dem Autoordner gestartet wird, sollte dieses Kommando
  1817. nicht verwendet werden, da zu dieser Zeit das AES noch nicht initialisiert
  1818. ist.
  1819.  
  1820. Siehe:    clipb
  1821.     goff
  1822.     sleep
  1823.  
  1824. -----
  1825. grep , egrep , fgrep - Mustersuche
  1826.  
  1827. Syntax: grep|fgrep|egrep [-cfslv] Pattern {File}
  1828.  
  1829. Sucht in allen angegebenen Dateien oder, falls keine Dateien angegeben sind,
  1830. in StdIn nach Zeilen, die auf das Muster Pattern passen. Die gefundenen
  1831. Zeilen werden mit dem Dateinamen ausgegeben.
  1832.  
  1833. fgrep sucht feste Strings. Es werden alle Zeilen ausgegeben, die den String
  1834. Pattern enthalten.
  1835.  
  1836. grep sucht Muster nach den Regeln der erweiterten Wildcards (siehe okami.doc).
  1837. Es werden alle Zeilen ausgegeben, in denen sich eine Zeichenkette befindet,
  1838. die nach den Regeln der erweiterten Wildcards auf Pattern paßt.
  1839. Wenn Pattern mit einer Tilde (~) beginnt, wird Pattern ab dem Beginn der Zei-
  1840. len gesucht. Wenn Pattern mit einem Dollarzeichen ($) endet, wird Pattern am
  1841. Ende der Zeilen gesucht. Achtung: in der Eingabe muß das Dollarzeichen in ein-
  1842. fachen Anführungszeichen ('$') oder hinter einem Dach (^$) stehen, da es sonst
  1843. als Einleitung einer Shellvariablen interpretiert wird.
  1844.  
  1845. egrep sucht Muster, die vollen regulären Ausdrücken (REs) entsprechen. Diese
  1846. werden nach folgenden Regeln gebildet:
  1847.  
  1848. * Jedes Zeichen ist ein RE und steht für sich selber. Sonderzeichen können
  1849.   durch einen vorgestellten \ gequotet werden.
  1850. * Ein Punkt (.) ist ein RE und steht für ein einziges beliebiges Zeichen.
  1851. * Ein Zirkumflex (^) ist ein RE und steht für den Anfang der Zeile.
  1852. * Ein Dollar ($) ist ein RE und steht für das Ende der Zeile.
  1853. * Wenn x ein RE ist, dann ist auch (x) ein RE. (Klammerung)
  1854. * Ein RE, gefolgt von einem Stern (*), bedeutet beliebig ofte (auch 0-malige)
  1855.   Wiederholung des RE.
  1856. * Ein RE, gefolgt von einem Plus (+), bedeutet beliebig ofte, aber mindestens
  1857.   1-malige Wiederholung des RE.
  1858. * Ein RE, gefolgt von einem Fragezeichen (?), bedeutet einmalige oder 0-malige
  1859.   Wiederholung des RE.
  1860. * Eine Anzahl von Zeichen in eckigen Klammern ([]) ist ein RE und steht für
  1861.   ein einziges Zeichen, und zwar eins der in den Klammern. Wenn das erste
  1862.   Zeichen in den Klammern ein Zirkumflex (^) ist, steht der RE für ein
  1863.   einziges Zeichen, und zwar ein beliebiges außer denen in den Klammern.
  1864.   Ein Minus (-) in den Klammern bedeutet "bis". Wenn ein - oder ] das erste
  1865.   Zeichen in den eckigen Klammern ist (ggfs. nach ^), dann verliert es
  1866.   seine besondere Bedeutung und steht für sich selber.
  1867. * Zwei REs, die durch einen senkrechten Strich (|) getrennt sind, sind eine
  1868.   RE und stehen für die eine oder die andere RE.
  1869.  
  1870. Die Funktionen für die Auswertung regulärer Ausdrücke stammen von Henry Spencer.
  1871.  
  1872. Da die Vergleichsfunktionen für reguläre Ausdrücke sehr effizient arbeiten,
  1873. ist egrep bei festen Strings schneller als grep, aber langsamer als fgrep.
  1874.  
  1875. Flags:
  1876.     -c    Die Zeilennummern der gefundenen Zeilen werden mit ausgegeben.
  1877.     -f    Es wird in jeder Datei nur die erste Übereinstimmung gesucht.
  1878.     -s    (nur für grep) berücksichtigt Whitespace-Zeichen am Zeilen-
  1879.         anfang. Wenn -s nicht angegeben ist, werden Whitespace-Zeichen
  1880.         am Zeilenanfang ignoriert.
  1881.     -l    ignoriert Groß- und Kleinschreibung.
  1882.     -v    Es werden alle Zeilen ausgegeben, die nicht auf das ange-
  1883.         gebene Pattern passen.
  1884.  
  1885. Beispiele:            findet z.B. die Zeile
  1886.  
  1887.     grep Hallo        Der Mann sagte "Hallo".
  1888.                 Hallo, sagte der Mann.
  1889.     grep H*o        Der Mann sagte nochmal "Hallo".
  1890.                 Heute oder morgen.
  1891.     grep [hH]allo        hallo
  1892.                 Hallo
  1893.     grep -l hallo        (dito)
  1894.                 Der Mann sagte zum dritten Mal "Hallo".
  1895.     grep Hallo^$        Der Mann sagte zu letztenmal Hallo
  1896.     fgrep ~[a-n]*[aAbB]?^$    Hier steht "~[a-n]*[aAbB]?$".
  1897.  
  1898.     fgrep printf *.c    sucht alle printf-Aufrufe in allen C-Dateien.
  1899.     fgrep "printf *.c"    sucht die Zeichenkette "printf *.c" in StdIn.
  1900.     cmds | grep ~[gst]    Ausgabe aller interner Kommandos, die mit g,
  1901.                 s oder t beginnen.
  1902.     egrep printf^|strcpy^|fopen *.c
  1903.                 sucht in allen C-Dateien alle Zeilen, die
  1904.                 printf, strcpy oder fopen enthalten. Die
  1905.                 |-Zeichen sind keine Pipes, sondern Teil des
  1906.                 regulären Ausdruckes und müssen daher durch
  1907.                 ein vorgestelltes ^ gequotet werden.
  1908.  
  1909. Rückgabewert:
  1910.     -1    Aufruffehler
  1911.     sonst    Anzahl der gefundenen Übereinstimmungen.
  1912.  
  1913. -----
  1914. hardcopy - Bildschirminhalt ausdrucken
  1915.  
  1916. Syntax: hardcopy
  1917.  
  1918. Falls ein Drucker empfangsbereit ist, wird eine Bildschirm-Hardcopy ausge-
  1919. druckt (nur bei S/W-Monitor möglich), ansonsten erscheint eine Fehler-
  1920. meldung. Da die Hardcopy durch eine Betriebssystemfunktion ausgeführt
  1921. wird, muß für manche Drucker ein entsprechender Druckertreiber installiert
  1922. sein.
  1923.  
  1924. Rückgabewert:
  1925.     0    Ok., es ist gedruckt worden.
  1926.     -1    Der Drucker war nicht bereit.
  1927.  
  1928. -----
  1929. hash - Einstellen und Auslesen der Hash-Tabelle
  1930.  
  1931. Syntax: hash [Kommando [Pfad]]
  1932. oder    hash -r {Pattern}
  1933. oder    hash -a {file}
  1934.  
  1935. Wenn von der Shell aus ein externes Kommando (Programm oder Shellscript) auf-
  1936. gerufen wird, dann wird dieses auf allen in der Shellvariablen PATH gespei-
  1937. cherten Pfaden in Verbindung mit allen in XEXT und SEXT gespeicherten Ex-
  1938. tendern gesucht. Wenn dann der zu dem Kommando gehörende vollständige Datei-
  1939. name gefunden ist, wird dieser in einer sog. Hash-Tabelle (benannt nach der
  1940. zugrundeliegenden Datenstruktur) abgelegt. Beim nächsten Aufruf desselben
  1941. Kommandos wird der Pfad dann der Hash-Tabelle entnommen, wodurch das auf-
  1942. wendige Suchen auf der Platte entfällt.
  1943. Ein Eintrag in der Hash-Tabelle besteht aus zwei Teilen: dem Aufruf-Kommando
  1944. und dem vollständigen Dateinamen (Pfad).
  1945. Mit dem Kommando hash kann diese Hash-Tabelle ausgelesen, verändert und ge-
  1946. löscht werden. Es gibt folgende Möglichkeiten des Aufrufs:
  1947.  
  1948. 1.    hash
  1949.         (keine Parameter) Die Einträge der Hash-Tabelle werden nach
  1950.         StdOut ausgegenen. Danach folgt eine Statistik über den be-
  1951.         legten Platz in der Tabelle.
  1952. 2.    hash Cmd
  1953.         (ein Parameter) Es werden die Definitionen aller Tabellen-
  1954.         einträge, deren Kommando-Teil auf Cmd paßt (laut den Regeln
  1955.         für erweiterte Wildcards), in der Form gültiger hash-Kommandos
  1956.         ausgegeben (siehe 3.)
  1957. 3.    hash Cmd Pfad
  1958.         (zwei Parameter) Es wird ein Eintrag in der Hash-Tabelle er-
  1959.         zeugt, und zwar mit dem angegebenen Kommando und Parameter.
  1960.         Auf diese Weise kann die Hashtabelle ohne den Aufruf von
  1961.         Kommandos belegt werden.
  1962. 4.    hash -r {Pattern}
  1963.         Es werden alle Einträge, die auf Pattern passen (laut den Re-
  1964.         geln für erweiterte Wildcards), aus der Tabelle gelöscht-
  1965.         Wenn kein Pattern angegeben ist, wird die Tabelle vollständig
  1966.         gelöscht.
  1967. 5.    hash -a {File}
  1968.         Alle angegebenen Dateien werden, falls die ausführbar sind, in
  1969.         die Hashtabelle eingetragen. Als Kommandoname wird der Basis-
  1970.         name der Dateien ohne Extender benutzt. Wenn ein Kommando be-
  1971.         reits in der Hashtabelle steht, wird der Anwender gefragt, ob
  1972.         dessen Definition ersetzt werden soll. Ein Druck auf ENTER oder
  1973.         die Eingabe eines Wortes, das mit y oder Y beginnt, heißt ja,
  1974.         jede andere Eingabe heißt nein. Wenn die Eingabe mit q oder Q
  1975.         beginnt, wird das hash-Kommando abgebrochen.
  1976.         Wenn kein File angegeben ist, werden alle Dateien des aktuellen
  1977.         Directories benutzt.
  1978.  
  1979. Beispiele:
  1980.  
  1981. hash
  1982.     Der Inhalt der Hashtabelle wird ausgegeben.
  1983.  
  1984. hash a*
  1985.     Es werden die Definitionen aller Kommandos ausgegeben, die mit a
  1986.     beginnen.
  1987.  
  1988. hash cc c:/compiler/cc.ttp
  1989.     Für das Kommando cc wird der Pfad "c:/compiler/cc.ttp" festgelegt.
  1990.     In Zukunft wird dieser Pfad durch das Kommando cc angesprochen, ohne
  1991.     daß auf der Platte gesucht werden muß. Es ist dafür nicht notwendig,
  1992.     daß c:/compiler in $PATH enthalten ist.
  1993.  
  1994. hash -r cc
  1995.     Obiger Eintrag wird wieder aus der Tabelle entfernt.
  1996.  
  1997. hash -r
  1998.     Die Tabelle wird gelöscht.
  1999.  
  2000. hash -a c:/bin/* c:/usr/bin/*
  2001.     Alle ausführbaren Dateien (Shellscripts und Binärprogramme) in den
  2002.     Directories c:/bin und c:/usr/bin werden in die Hashtabelle einge-
  2003.     tragen.
  2004.  
  2005. hash * >hash.sh
  2006.     Die Hashtabelle wird in eine Datei geschrieben. Diese Datei ist ein
  2007.     Shellscript, das, wenn es ausgeführt wird, die Hashtabelle auf den
  2008.     aktuellen Stand restauriert. Dieses Kommando kann z.B. mit trap
  2009.     für das Ende der Shell eingestellt werden, die Datei hash.sh kann
  2010.     vom Profile aus gestartet werden.    
  2011.  
  2012. -----
  2013. hd - Hex-Dump
  2014.  
  2015. Syntax: hd [-b] [File]
  2016.  
  2017. Gibt einen Hex-Dump von StdIn oder, falls angegeben, von File, nach StdOut.
  2018. Der Hexdump ist folgendermaßen aufgebaut:
  2019.  
  2020. nnnnnn hh hh ..... hh hh aaaaaaaa aaaaaaaa
  2021.  
  2022. nnnnnn: Die Byte-Nummer (Hex)
  2023. hh:    jeweils ein Byte in Hex (insgesamt 16)
  2024. aa...a: die entsprechenden Bytes in Ascii (ein Punkt, falls nicht druckbar.
  2025.     Es wird der Punkt mit Ascii-Code 0xfa benutzt.).
  2026.  
  2027. Flags:    -b    An der Stelle aa...a werden keine Punkte, sondern immer die
  2028.         Ascii-Zeichen ausgegeben, auch wenn diese nicht druckbar
  2029.         sind. Eine solche Ausgabe kann man dann z.B. zu dem Kommando
  2030.         raw -n pipen.
  2031.  
  2032. Um einen flüchtigen Überblick über den binären Inhalt einer Datei zu ge-
  2033. winnen, reicht es in manchen Fällen aus, das Kommando raw zu benutzen, das
  2034. wesentlich schneller ist und eine kürzere Ausgabe erzeugt.
  2035.  
  2036. Beispiele:
  2037. 1) Hex-Dump einer Binärdatei:
  2038.     hd sh.ttp
  2039.  
  2040. 2) Hex-Dump der Inhalte der Speicherstellen 0xabc000 bis 0xabcfff:
  2041.     memex 0xabc000 0xfff | hd
  2042.  
  2043. 3) Seitenweiser Hexdump:
  2044.     hd sh.ttp | pg
  2045.  
  2046. 4) Hexdump der Dateien test1.tos, test2.tos und test3.tos in die Datei
  2047.    test.hd:
  2048.     hd test1.tos test2.tos test3.tos > test.hd
  2049.  
  2050.  
  2051. Siehe auch:    raw
  2052.  
  2053. -----
  2054. help - Kurzanleitung mit Syntaxerklärung
  2055.  
  2056. Datei:    $ETC/help
  2057. Syntax: help
  2058.  
  2059. Die Datei Datei $ETC/help wird nach StdOut ausgegeben. Die Ausgabe erfolgt
  2060. mit dem Kommando pg.
  2061.  
  2062. Siehe: pg
  2063.  
  2064. -----
  2065. history - history-Tabelle laden und speichern
  2066.  
  2067. Syntax: history [-(l|s)]
  2068.  
  2069. Wenn kein Parameter angegeben ist, werden alle Einträge der Tastatur-History-
  2070. tabelle nach StdOut geschrieben, der zuletzt eingegebene Eintrag zuletzt.
  2071. (Das ist, wenn history von der Tastatur eingegeben wurde, das history-Kommando
  2072. selber).
  2073. Wenn der Parameter -l angegeben ist, werden Zeilen von StdIn eingelesen und
  2074. nacheinander in die History-Liste eingefügt, so als ob sie über die Tastatur
  2075. eingegeben würden.
  2076.  
  2077. Wenn das Flag -s angegeben ist, wird nur eine Statistik über freie und belegte
  2078. Plätze in der History-Liste ausgegeben. Hierbei ist zu beachten, das die His-
  2079. tory-Liste in der Art eines Ringpuffers organisiert ist, was bedeutet, daß sie
  2080. niemals überlaufen kann.
  2081.  
  2082. Mit den folgenden Zeilen im Profile:
  2083.  
  2084.     HISTFILE=$ETC/history
  2085.     if [ -f $HISTFILE ]
  2086.     then
  2087.              history -l <$HISTFILE
  2088.     fi
  2089.     trap +history ^>$HISTFILE ^; chmod +h $HISTFILE
  2090.  
  2091. wird bei jedem Programmende die History-Liste in die Datei $ETC/history ge-
  2092. schrieben (und die Datei unsichtbar gemacht), und bei Programmstart wird die
  2093. History aus dieser Datei wiederhergestellt.
  2094. Anmerkung: 
  2095. 1) es genügt:
  2096.     trap +history ^>$HISTFILE
  2097.    , aber dann ist die Datei nicht unsichtbar.
  2098. 2) das Pluszeichen vor history verhindert das Überschreiben eines evtl. be-
  2099.    reits definierten Trap-Kommandos.
  2100.  
  2101. Siehe auch:    trap
  2102.         okami.doc zum Thema Tastatureingabe
  2103.  
  2104. -----
  2105. id - User- und Gruppen-Nummer ermitteln
  2106.  
  2107. Syntax: id
  2108.  
  2109. id ermittelt die User- und Gruppennummer der Shell. Das hat keine große
  2110. Bedeutung, da die Multiuser-Fähigkeiten von MiNT noch ziemlich rudimentär
  2111. sind.
  2112. Geht verständlicherweise schief, wenn MiNT nicht vorhanden ist.
  2113.  
  2114. Siehe auch:    MiNT Manual zu "Pgetuid" und "Pgetgid"
  2115.  
  2116. -----
  2117. if , then , else , fi - Bedingte Ausführung
  2118.  
  2119. Syntax: if Kommando1
  2120.     then
  2121.     Kommandos2
  2122.     [else
  2123.      Kommandos3]
  2124.     fi
  2125.  
  2126. Mit dieser Befehlsfolge ist es möglich, Teile eines Shellscripts nur
  2127. dann auszuführen, wenn eine bestimmte Bedingung zutrifft. Die Verwen-
  2128. dung bei Tastatureingabe ist ebenfalls möglich, aber nicht unbedingt
  2129. sinnvoll.
  2130.  
  2131. Wenn der Rückgabewert von Kommando1 ungleich 0 ist, werden die unter
  2132. Kommandos2 angegebenen Kommandos ausgeführt. Wenn der Rückgabewert
  2133. von Kommando1 gleich 0 ist, werden die unter Kommandos3 angegebenen
  2134. Kommandos ausgeführt, falls angegeben. Hierbei sind Kommandos2 und
  2135. Kommandos3 Folgen von beliebig vielen (auch null) beliebigen Shellkommandos
  2136. (auch weitere if-else-fi-Konstruktionen). Es können über 32000 if's ge-
  2137. schachtelt werden.
  2138.  
  2139. Als Kommando1 kann ein beliebiges Shell-Kommando stehen. Die meisten
  2140. internen Kommandos geben im Fehlerfall -1, sonst 0 zurück. Bei einigen
  2141. Kommandos (z.B. grep) hat der Rückgabewert eine andere Bedeutung.
  2142. Typische Kandidaten für "Kommando1" sind true, false und test (bzw. "[").
  2143.  
  2144.  
  2145. Beispiele:
  2146.  
  2147. Die folgenden Beispiele sind als Ausschnitte von Shellscripts zu verstehen.
  2148.  
  2149. 1) Ausgabe der Information, ob eine Datei existiert
  2150.  
  2151.     if test -f datei.txt
  2152.     then
  2153.       echo datei.txt existiert
  2154.     else
  2155.       echo datei.txt existiert nicht
  2156.     fi
  2157.  
  2158. 2) Feststellen, ob ein Muster in einer Datei vorhanden ist
  2159.    (Die Ausgabe von grep wird nach NULL: umgeleitet, damit sie nicht die
  2160.     Bildschirmausgabe stört.)
  2161.  
  2162.     if grep Muster datei.dat >NULL:
  2163.     then
  2164.       echo Das Muster ist vorhanden.
  2165.     else
  2166.       echo Es ist nicht vorhanden.
  2167.     fi
  2168.  
  2169. 3) Sicherheitsabfrage vom Benutzer einholen. Wenn der Benutzer ein Wort
  2170.    eingibt, das mit n oder N beginnt, wird das Programm abgebrochen (d.h.
  2171.    das augenblickliche Shellscript beendet).
  2172.  
  2173.     echo "Soll das Programm fortgesetzt werden? (j/n)"
  2174.     read JAODERNEIN
  2175.     if [ $JAODERNEIN == [nN]* ]
  2176.     then
  2177.       exit
  2178.     fi
  2179.  
  2180. 4) Numerische Vergleiche:
  2181.  
  2182.     echo Bitte geben Sie ihr Alter ein.
  2183.     read ALTER
  2184.     if [ $ALTER -ge 18 ]
  2185.     then
  2186.       echo Sie sind erwachsen.
  2187.     else
  2188.       if [ $ALTER -lt 14 ]
  2189.       then
  2190.         echo Du bist ein Kind.
  2191.         if [ $ALTER -lt 6 ]
  2192.         then
  2193.           echo Du hast geschummelt, mit $ALTER kann man noch nicht lesen.
  2194.         fi
  2195.       else
  2196.         echo Du bist ein Jugendlicher.
  2197.       fi
  2198.     fi
  2199.  
  2200. 5) Das Kommando keydef soll ausgeführt werden, aber nur, wenn es auch als in-
  2201.    ternes Kommando vorhanden ist.
  2202.  
  2203.     if [ keydef -t i ]
  2204.     then
  2205.       keydef F1 "dir"
  2206.     else
  2207.       echo keydef ist nicht vorhanden!
  2208.     fi
  2209.  
  2210. 6) Eine Art Neuimplementation des type-Kommandos, es wird der Typ des Kommandos
  2211.    $COM ausgegeben.
  2212.  
  2213.     if [ $COM -t f ]
  2214.     then
  2215.       echo $COM is a function
  2216.     fi
  2217.     if [ $COM -t i ]
  2218.     then
  2219.       echo $COM is a shell builtin
  2220.     fi
  2221.     (usw.)
  2222.  
  2223. 7) Feststellen, ob das Kommando upn extern oder intern ist:
  2224.  
  2225.     if [ upn -t sb ]
  2226.     then
  2227.       echo upn ist ein externes Kommando
  2228.     else
  2229.       echo upn ist intern oder Shellfunktion
  2230.     fi
  2231.  
  2232. 8) Testen, ob ein Shellscript unter der Okami-Shell ausgeführt wird:
  2233.  
  2234.     if [ +v OKAMISHELL ]
  2235.     then
  2236.       ...
  2237.     else
  2238.       echo Wasn das fürne Shell?
  2239.     fi
  2240.  
  2241. Siehe auch: test
  2242.         true
  2243.         false
  2244.         while
  2245.  
  2246. -----
  2247. indir - Kommando-Indirektion
  2248.  
  2249. Syntax: indir String
  2250.  
  2251. Der String wird ausgewertet (Shellvariablen expandiert, Command Substitution
  2252. durchgeführt etc.) und auf StdOut ausgegeben. String wird also insgesamt
  2253. zweimal ausgewertet: einmal bei der Eingabe des Kommandos und das Ergebnis
  2254. dieser Auswertung nochmal durch das indir-Kommando. Dies ist nützlich beim
  2255. Arbeiten mit Variablen, die andere Variablennamen beinhalten, für doppelte
  2256. Command Substitution usw.
  2257.  
  2258. Beispiele:
  2259.     VAR=hallo
  2260.     POINTER=VAR
  2261.     echo $POINTER            ergibt VAR
  2262.     echo ^$POINTER            ergibt $POINTER
  2263.     indir ^$POINTER            ergibt VAR
  2264.     echo ^$$POINTER            ergibt $VAR
  2265.     indir ^$$POINTER        ergibt hallo
  2266.  
  2267. ... also ein Zugriff auf den Inhalt der Variablen VAR ohne direkten Zugriff
  2268. auf VAR. indir entspricht also in dieser Verwendung ungefähr dem Pointer-
  2269. Konzept moderner Programmiersprachen.
  2270.  
  2271.     VAR=^`echo hallo^`
  2272.     echo $VAR            ergibt `echo hallo`
  2273.     indir $VAR, wie gehts            ergibt hallo, wie gehts
  2274.  
  2275. ... also indirekter Zugriff auf Shellkommandos, die z.B. in einer Shellvaria-
  2276. blen liegen. In obigem indir-Kommando wird zuerst $VAR zu `echo hallo` expan-
  2277. diert, und indir führt dann die Command Substitution aus.
  2278.  
  2279.     REVON='^033p'        speichern eines VT52-Codes
  2280.     echo $REVON        ergibt ^033p
  2281.     indir $REVON        führt den VT52-Code aus.
  2282.  
  2283. -----
  2284. keyb - Tastatur-Konfiguration
  2285.  
  2286. Syntax: keyb [-]
  2287. oder    keyb [(+|-)a] [(+|-)b] [(+|-)c] [-iInit] [-rRepeat] [-k]
  2288.  
  2289. Mit diesem Kommando wird die Tastatur konfiguriert. Folgende Konfigurationen
  2290. sind möglich:
  2291.     Das Auto-Repeat kann ein- und ausgeschaltet werden,
  2292.     Das Tastenklicken kann ein- und ausgeschaltet werden,
  2293.     Die Klingel bei Ausgabe von Ascii BEL (0x7) kann ein- und ausge-
  2294.     schaltet werden,
  2295.     Die Zeitspanne bis zum Einsetzen des Auto-Repeat und die Wieder-
  2296.     holrate können eingestellt werden,
  2297.     Der Tastaturpuffer kann gelöscht werden.
  2298. In der ersten Form, also beim Aufruf ohne Parameter oder nur mit einem
  2299. Minuszeichen, wird die Konfiguration ausgegeben. Wenn als Parameter ein
  2300. Minuszeichen angegeben ist, erfolgt die Ausgabe so, daß sie später wieder
  2301. als Parameter für keyb benutzt werden kann, z.B.:
  2302.     X=`keyb -`
  2303.     ....................... sonstige Kommandos
  2304.     keyb $X
  2305. speichert die Konfiguration und stellt sie danach wieder her.
  2306.  
  2307. Bei den Flags a, b und c bedeutet + einschalten und - ausschalten.
  2308.  
  2309.     a    Auto-Repeat ein/aus
  2310.     b    Ascii-BEL ein/aus
  2311.     c    Tastenklick ein/aus
  2312.  
  2313. Bei den Flags -i und -r wird die entsprechende Zeitspanne in 1/50 Sekunden
  2314. angegeben.
  2315.  
  2316.     -i    die Zeitspanne bis zum Einsetzen des Auto-Repeat,
  2317.     -r    die Zeitspanne zwischen zwei Wiederholungen.
  2318.  
  2319. Das Flag -k hat eine Sonderbedeutung: wenn es angegeben ist, löscht
  2320. keyb den Gemdos- und Bios-Tastaturpuffer. Diese Option kann benutzt
  2321. werden, um nach längeren Shellscripts evtl. gedrückte Tasten aus dem
  2322. Puffer zu entfernen.
  2323.  
  2324. ACHTUNG: bei diesem Kommando können die Flags nicht zu Gruppen zusammenge-
  2325. faßt werden, d.h.
  2326.     keyb -abc
  2327. ist falsch, es muß
  2328.     keyb -a -b -c
  2329. heißen.
  2330.  
  2331. Siehe auch:    cursor
  2332.         scr
  2333.         mouse
  2334.  
  2335. -----
  2336. keydef - Umdefinition der Tastatur
  2337.  
  2338. Syntax: keydef [+(n|s|c|a)] Scancode [Text|-]
  2339.     keydef clear|list|help
  2340.  
  2341. Mit diesem Kommando kann die Ausgabe aller Tasten umdefiniert werden. Es ist
  2342. damit möglich, jeder Taste neue Zeichenketten zuzuordnen, die beim Drücken
  2343. dieser Taste zu erzeugen sind. Damit kann man z.B. die Buchstabentasten um-
  2344. sortieren, aber auch die F-Tasten mit Funktionen belegen.
  2345.  
  2346. Jedes keydef-Kommando betrifft eine Taste, die durch den Scancode und die
  2347. Steuertaste bestimmt ist (z.B. Ctrl A etc.)
  2348.  
  2349. Wenn eins der Flags +n, +s, +c oder +a angegeben ist, bestimmt dieses, für
  2350. welche Steuertaste die Umdefinition wirkt. Es bedeuten:
  2351.     +n    keine Steuertaste
  2352.     +s    eine der Shift-Tasten
  2353.     +c    die Control-Taste
  2354.     +a    die Alternate-Taste
  2355. Wenn keins dieser Flags angegeben ist, wird +n angenommen.
  2356.  
  2357. Der Scancode kann in einem der folgenden Formate angegeben sein:
  2358.     1) ein Minuszeichen, gefolgt von einer Zahl; diese repräsentiert den
  2359.        gewünschten Scancode direkt.
  2360.     2) ein Schlüsselstring. Eine Liste der möglichen Schlüsselstrings
  2361.        finden Sie in dieser Datei unter dem Stichwort "keydefcode".
  2362.  
  2363. Wenn kein Text angegeben ist, wird die betreffende Tastendefinition (falls
  2364. vorhanden) ausgegeben.
  2365. Wenn der Text aus einem Minuszeichen besteht, wird die betreffende Tasten-
  2366. definition (falls vorhanden) gelöscht.
  2367. Ansonsten wird der Text als neue Tastendefinition gespeichert, eine evtl. be-
  2368. reits vorhandene Definition derselben Taste wird dabei überschrieben.
  2369.  
  2370. Wenn der Text Leerzeichen oder Sonderzeichen enthält, muß er in Anführungs-
  2371. zeichen eingeschlossen sein.
  2372.  
  2373. Wenn der Text mit einem Pluszeichen beginnt, wird, wenn in der Tastatur-
  2374. eingabe die betreffende Taste gedrückt wird, die Eingabezeile durch den Text
  2375. ersetzt (ansonsten wird der Text an die bisherige Eingabe angehängt).
  2376. Wenn der Text mit "^c" endet, wird nach Druck auf die betreffende Taste die
  2377. Eingabezeile ausgeführt.
  2378.  
  2379. Wenn der Text mit einem Ausrufezeichen beginnt, stellt er nicht einen durch
  2380. die Taste zu erzeugenden Ascii-String, sondern eine Umdefinition des durch
  2381. die Taste zu erzeugenden Shift-, Scan- und Ascii-Codes dar. Das Format
  2382. lautet
  2383.     ![+x]Scancode [Asciicode]
  2384. x ist dabei entweder n, s, c oder a und bewirkt die Steuertastenkombination.
  2385. Scancode wird wie oben beschrieben angegeben und ist der neue zu erzeugende
  2386. Scancode.
  2387. Asciicode ist ein einziges Zeichen, das den neuen Ascii-Code der Taste be-
  2388. schreibt.
  2389.  
  2390. Wenn als einziger Parameter "clear" angegeben ist, werden sämtliche Tasten-
  2391. definitionen gelöscht.
  2392. Wenn als einziger Parameter "list" angegeben ist, wird eine Liste aller vor-
  2393. handener Definitionen erzeugt, und zwar in Form von keydef-Kommandos.
  2394. Wenn als einziger Parameter "help" angegeben ist, wird eine Liste aller Scan-
  2395. code-Schlüsselstrings erzeugt.
  2396.  
  2397. Alle Umdefinitionen betreffen ausschließlich die Tastatureingabe der Shell.
  2398.  
  2399. Beispiele:
  2400.  
  2401. 1) Amerikanische Tastatur durch Vertauschen von y und z.
  2402.     keydef y z
  2403.     keydef z y
  2404.     keydef -s y Z
  2405.     keydef -s z Y
  2406.  
  2407.    Das jeweils erste y bzw. z ist die Angabe des umzudefinierenden Scancodes.
  2408.    Das zweite ist die Ascii-Zeichenkette, die durch die Taste erzeugt werden
  2409.    soll.
  2410.  
  2411. 2) Ausführen von "dir *.c" bei Druck auf F1:
  2412.     keydef f1 "+dir *.c^c"
  2413.  
  2414. 3) Ausgabe der Definition von Ctrl Help:
  2415.     keydef +c help
  2416.    oder:
  2417.        keydef +c -0x62
  2418.    Einmal wird die Help-Taste durch den Code-String "help" und einmal direkt
  2419.    durch den Scancode 0x62 angegeben.
  2420.  
  2421. 4) Löschen der Definition von Shift F5:
  2422.     keydef -s F5 -
  2423.  
  2424. 5) Ausgabe aller Tastendefinitionen in eine Datei:
  2425.     keydef list >keys.sh
  2426.    Die Datei keys.sh ist dann ein Shellscript, das, wenn es gestartet wird,
  2427.    alle Tastendefinitionen installiert.
  2428.  
  2429. 6) Ein Druck auf Shift-F6 soll dasselbe bewirken wie Help. Dafür wird der
  2430.    von F6 bewirkte Scancode auf den von Help umgebogen.
  2431.     keydef +s F6 "!help"
  2432.  
  2433. 7) Mit Ctrl-Esc wird die Shell beendet, Esc alleine löscht nur die Eingabe-
  2434.    zeile (übernimmt also die Funktion von Clr-Home), Clr-Home löscht den
  2435.    Bildschirm:
  2436.     keydef +c ESC "!+c D"
  2437.     keydef ESC "!CLR"
  2438.     keydef CLR "+cls ^c"
  2439.    Das erste keydef belegt Ctrl-Esc mit Ctrl-D, das zweite belegt Esc alleine
  2440.    mit der ursprünglichen Funktion der Clr-Home-Taste. Das dritte keydef
  2441.    sorgt dafür, daß bei Druck auf Clr-Home das Kommando cls ausgeführt
  2442.    wird.
  2443.    => Man kann alle vordefinierten Tastenfunktionen beliebig auf neue Tasten
  2444.    legen!!!!
  2445.  
  2446. 8) Ein Druck auf Undo soll ein Z eingeben.
  2447.     keydef undo "!Z z"
  2448.     keydef +s undo "!+s Z Z"
  2449.    Das erste keydef sorgt dafür, daß bei Druck auf Undo der Scancode von Z
  2450.    und der Ascii-Code von z benutzt wird. Das zweite keydef macht dasselbe
  2451.    für Shift Undo und erzeugt ein großes Z.
  2452.  
  2453. 9) Löschen aller Tastendefinitionen:
  2454.     keydef clear
  2455.  
  2456. Siehe auch:    keydefcode
  2457.  
  2458. -----
  2459. keydefcode - Code-Strings für Scancode-Angaben des keydef-Kommandos
  2460.   
  2461. Bei allen Codes ist die Groß/Kleinschreibung ohne Bedeutung. Es gilt:
  2462.     * Die Strings A bis Z und 0 bis 9 stehen für die jeweilige Buchstaben-
  2463.       bzw. Zahlentaste.
  2464.     * Die F-Tasten werden durch ein vorgestelltes F gekennzeichnet (z.B.
  2465.       F6, F10,...)
  2466.     * Tasten des Zehnerblocks sind durch ein vorgestelltes Z gekenn-
  2467.       zeichnet. Z5 ist also die 5 auf dem Zehnerblock.
  2468.  
  2469.     Code        Tastenaufschrift
  2470.     ----        ----------------
  2471.                         Alpha-Block
  2472.     ESC        Esc
  2473.     QUES        ß ?
  2474.     ACC        ' `
  2475.     HASH        # ^
  2476.     BS        Backspace
  2477.     TAB        Tab
  2478.     AT        @ Ü \
  2479.     PLUS        + *
  2480.     CR        Return (*)
  2481.     DEL        Delete
  2482.     OB        [ { Ö
  2483.     CB        ] } Ä
  2484.     TIL        ~ |
  2485.     LESS        < >
  2486.     COMMA        , ;
  2487.     DOT        . :
  2488.     MINUS        - _
  2489.     SPC        die Leertaste
  2490.                         Cursor-Block
  2491.     UNDO        Undo
  2492.     HELP        Help
  2493.     INS        Insert
  2494.     CLR        Clr Home
  2495.     UPAR        Pfeil auf
  2496.     DNAR        Pfeil ab
  2497.     LTAR        Pfeil nach links
  2498.     RTAR        Pfeil nach rechts
  2499.                         Zehnerblock
  2500.     ZMINUS        -
  2501.     ZPLUS        +
  2502.     ZOP        (
  2503.     ZCP        )
  2504.     ZSLASH        /
  2505.     ZAST        *
  2506.     ZDOT        .
  2507.     ZCR        Enter (*)
  2508.  
  2509.  
  2510. (*) Eine Umdefinition dieser Tasten ist zwar möglich, aber bei der Tastatur-
  2511. eingabe ohne Wirkung.
  2512.  
  2513. -----
  2514. kill - Signale an Prozesse schicken
  2515.  
  2516. Syntax: kill [-Signal] Prozeß {Prozeß}
  2517.  
  2518. Dieses Kommando kann nur benutzt werden, wenn MiNT installiert ist.
  2519.  
  2520. Es verhält sich im wesentlichen wie das mit MiNT gelieferte kill.ttp: das
  2521. angegebene Signal, per Default 15 (SIGTERM), wird an die angegebenen
  2522. Prozesse geschickt.
  2523. Das Okami-kill stellt allerdings eine Erweiterung dar: beim Original muß als
  2524. "Prozeß" die Prozeßnummer (P-Id) angegeben werden, das Okami-kill erlaubt
  2525. auch die Angabe eines Programmnamens. In diesem Fall wird das Signal an
  2526. alle Prozesse mit diesem Namen (entscheident ist der Dateiname in u:/proc)
  2527. geschickt.
  2528. Außerdem können Prozeßnummern als Zahlenbereiche angegeben werden, so
  2529. bedeutet z.B. "10-15" die Prozesse Nr. 10 bis 15.
  2530.  
  2531. Beispiele:
  2532.     kill 12
  2533.         schickt Signal 15 an Prozeß Nr. 12.
  2534.     kill -9 12-19 -11 20 21
  2535.         schickt Signal 9 an die Prozesse 12 bis 19 und Signal 11
  2536.         an die Prozesse 20 und 21.
  2537.     kill make
  2538.         schickt Signal 15 an alle Prozesse namens "make", ist
  2539.         also identisch zu "rm u:/proc/make.*".
  2540.  
  2541. Siehe auch:    MiNT Manual zum Thema Pkill
  2542.  
  2543. -----
  2544. ln - Neue Namen für Dateien erzeugen
  2545.  
  2546. Syntax: ln [-s] Source {Source} Dest
  2547.  
  2548. Dieses Kommando kann nur benutzt werden, wenn MiNT installiert ist.
  2549.  
  2550. Die Syntax ist analog zu der von cp und mv (siehe dort).
  2551.  
  2552. Wenn -s angegeben ist, wird ein symolischer Link erzeugt, sonst ein
  2553. Hard Link. Für Details siehe das MiNT-Manual zu den Stichworten
  2554. Flink (hard link) und Fsymlink (symbolischer Link).
  2555.  
  2556. Siehe auch:    cp
  2557.         ls -s
  2558.         mv
  2559.  
  2560. -----
  2561. logo - Das Okami-Logo ausgeben
  2562.  
  2563. Syntax:    logo [x [y]]
  2564.  
  2565. Das Okami-Logo wird an die Bildschirmkoordinaten x,y gezeichnet. Die Default-
  2566. werte von x und y sind 0. x muß ein Vielfaches von 32 sein.
  2567. Bei nicht-monochromer Bildauflösung, wenn also nicht jedem Pixel ein Bit im
  2568. Bildschirmspeicher zugeordnet ist, erzeugt dieses Kommando keine Ausgabe.
  2569. In diesem Fall wird -1 zurückgegeben.
  2570. Zu große oder zu kleine Werte von x und y werden auf die jeweiligen Maximal-
  2571. werte der Bildschirmauflösung gesetzt.
  2572. Um Konflikte mit dem Cursor-Blinken zu vermeiden, sollte, wenn das Logo über
  2573. die aktuelle Cursorposition geschrieben wird, vorher der Cursor mit cursor -v
  2574. unsichtbar gemacht werden.
  2575.  
  2576. -----
  2577. ls - Dateien auflisten
  2578.  
  2579. Syntax: ls [-adlfkCcvis] [-xtbnr] {Filespec}
  2580.     ls -! Filespec {Filespec}
  2581.  
  2582. Gibt eine Liste aller Dateien, deren Namen auf Filespec passen, nach StdOut
  2583. aus. Filespec nicht angegeben bedeutet .\* (alle Dateien im aktuellen Direc-
  2584. tory).
  2585. Die Namen von Ordnern werden in [] (eckige Klammern) eingefasst.
  2586. Die Namen von ausfuerbaren Dateien werden in <> (spitze Klammern) eingefasst.
  2587. Flags:
  2588.     -a    Auch versteckte und System-Dateien werden ausgegeben. ls
  2589.         betrachtet auch die Directories . und .. sowie alle Dateien,
  2590.         deren Name mit einem . beginnt (die also nur einen Extender
  2591.         haben), als versteckt; diese Dateien werden also nur dann
  2592.         angezeigt, wenn -a angegeben ist.
  2593.     -d    Wenn Filespec der Name eines Ordners ist, wird der Ordner
  2594.         selber und nicht sein Inhalt ausgegeben.
  2595.     -l    Angaben ueber Dateiattribute, Dateilänge und Dateidatum und
  2596.         -zeit werden ausgegeben. Außerdem werden am Ende der Liste
  2597.         die Summe aller Dateilängen und die Anzahl der    Dateien aus-
  2598.         gegeben (bei mehr als einer Datei). Siehe unten (*).
  2599.     -f    Gibt bei -l bei den Dateiattributen mit aus, ob eine aus-
  2600.         führbare Datei schnellgeladen wird. Siehe unten (*). Ist ohne
  2601.         Wirkung, wenn -l nicht angegeben ist.
  2602.     -s    Gibt bei -l bei Dateien, die symbolische Links sind, den Namen
  2603.         der gelinkten Datei mit aus. Ohne Wirkung, wenn MiNT nicht
  2604.         installiert ist.
  2605.     -k    Keine [] und <> um Dateinamen.
  2606.     -C    Die Dateien werden in mehreren Spalten ausgegeben.
  2607.     -c    wie -C, aber die Dateien werden nur dann in mehreren Spalten
  2608.         ausgegeben, wenn die Standardausgabe ein TTY (z.B. der Bild-
  2609.         schirm) ist. Wenn die Ausgabe von ls umgeleitet wird, dann
  2610.         wird ein Dateiname pro Zeile ausgegeben, die Zeilen werden
  2611.         mit \n getrennt.
  2612.     -v    Es wird nur der Diskettenname ausgegeben.
  2613.     -i    Zu jeder Datei wird anhand einer Indexdatei eine Erklärung
  2614.         ausgegeben. siehe unten (**).
  2615.     -x    Die Dateien werden nach Extendern sortiert ausgegeben.
  2616.     -t    Die Dateien werden nach dem Anlagezeitpunkt der Datei
  2617.         sortiert ausgegeben (die älteste Datei zuerst).
  2618.     -b    Die Dateien werden nach ihrer Länge sortiert ausgegeben
  2619.         (die kürzeste Datei zuerst).
  2620.     -n    Die Dateien werden in der Reihenfolge ausgegeben, in der
  2621.         sie physikalisch gespeichert sind. -r ist ohne Wirkung.
  2622.     -r    Die Reihenfolge der Dateien wird umgekehrt (außer bei -n).
  2623.  
  2624. (*) Anmerkung zu -l und -f:
  2625. Die Dateiattribute werden analog dem chmod-Kommando ausgegeben. Für ein ge-
  2626. setztes Attribut erscheint der entsprechende Buchstabe, für ein nicht ge-
  2627. setztes erscheint ein Minuszeichen.
  2628. Wenn die Datei ausführbar ist, erscheint als letztes ein x. Über die Ausführ-
  2629. barkeit entscheiden der Dateinamen-Extender und die Shellvariablen XEXT und
  2630. GEXT.
  2631. Wenn das Flag -f angegeben ist, wird bei ausführbaren Programmdateien fest-
  2632. gestellt, ob das Fastload-Bit im Programmheader gesetzt ist. Wenn das der
  2633. Fall ist, wird statt dem x ein f ausgegeben.
  2634. Wenn -f nicht angegeben ist, wird das Fastload-Bit nicht beachtet. Das ist so,
  2635. da, um das Fastload-Bit zu ermitteln, auf die Datei selber (und nicht nur auf
  2636. den Directory-Eintrag) zugegriffen werden muß, was die Ausgabe von ls be-
  2637. sonders bei Disketten sehr verlangsamt.
  2638.  
  2639. (**) Anmerkung zu -i:
  2640. Wenn sich in demselben Directory wie die auszugebenden Dateien eine Datei
  2641. namens `_index' befindet, so wird diese, wenn das Flag -i angegeben ist,
  2642. eingelesen. Diese Datei enthält erklärende Anmerkungen zu den einzelnen
  2643. Dateien des Directories, in dem sie sich befindet, und zwar in dem folgenden
  2644. Format:
  2645.     - Leerzeilen und Zeilen, die mit einem Doppelkreuz beginnen, sind
  2646.       Kommentarzeilen.
  2647.     - Alle anderen Zeilen haben die Form
  2648.         Pattern Text
  2649.  
  2650. Hierbei ist `Pattern' ein Muster nach den Regeln der erweiterten Wildcards,
  2651. das `Text' als den auszugebenden Text für alle Dateien, die auf `Pattern'
  2652. passen, festlegt. Leerzeichen am Anfang und Ende der Zeile werden ignoriert,
  2653. Text selber darf Leerzeichen enthalten. Pattern und Text müssen durch
  2654. mindestens ein Leerzeichen getrennt sein. Beispiel: die Zeile
  2655.     *.c C-Quellcode
  2656. legt den Text "C-Quellcode" für alle C-Dateien fest.
  2657. Achtung: für eine Datei ist die _index-Datei zuständig, die sich in demselben
  2658. Directory wie die Datei befindet. Bei `ls -i ../abc/*.c' würde also die Datei
  2659. `../abc/_index' benutzt.
  2660. Sinn dieser Sache ist weniger, Dateien zu klassifizieren, als vielmehr indi-
  2661. viduelle Erklärungstexte zu den einzelnen Dateien schreiben zu können. Daher
  2662. wird auch in jedem Directory eine eigene Indexdatei verwaltet.
  2663.  
  2664. Wenn keins der Flags -x, -t, -b, -n angegeben ist, werden die Dateien nach
  2665. dem Dateinamen sortiert ausgegeben (in aufsteigender Reihenfolge). Dann
  2666. und bei -x erscheinen die Ordner nach den Dateien.
  2667.  
  2668. Wenn als erstes Flag -! angegeben ist, werden alle folgenden Angaben als
  2669. Dateispezifikationen betrachtet und von den betreffenden Dateien Attribute
  2670. (binär), Datum und Uhrzeit (hexadezimal), Dateigröße (dezimal) und der voll-
  2671. ständige Dateiname ausgegeben, und zwar in der physikalischen Reihenfolge.
  2672. Es können keine anderen Flags mit -! benutzt werden. Diese Option dient zu
  2673. Debug-Zwecken der Shell.
  2674.  
  2675. Beispiele:
  2676. 1) Liste aller Dateien im aktuellen Verzeichnis, Ausgabe in mehreren
  2677.    Spalten:
  2678.     ls -C
  2679.  
  2680. 2) Liste aller C-Quelldateien im aktuellen Verzeichnis, sortiert nach
  2681.    Anlagedatum, die jüngste Datei zuerst:
  2682.     ls -tr *.c
  2683.  
  2684. 3) Liste aller .PRG-Dateien im Ordner d:\shell mit Dateiattributen, Datei-
  2685.    länge und -Datum:
  2686.     ls -l d:\shell\*.prg
  2687.  
  2688. 4) Liste aller Dateien im Ordner d:\shell mit Attributen, Länge und Datum,
  2689.    sortiert nach Dateilänge:
  2690.     ls -l -b d:\shell
  2691.  
  2692. 5) Liste von Attributen, Länge und Datum des Ordners d:\shell:
  2693.     ls -ld d:\shell
  2694.  
  2695. 6) Ausgabe des Diskettennamens von Diskette A:
  2696.     ls -v A:\
  2697.  
  2698. 7) Erzeugen einiger üblicher Varianten von ls: (z.B. im Profile)
  2699.     alias ls !ls -c
  2700.     alias ll !ls -l
  2701.     alias lc !ls -C
  2702.  
  2703.  
  2704. Rückgabewert:
  2705.     -1    Aufruffehler
  2706.     sonst    die Anzahl der ausgegebenen Dateien.
  2707.  
  2708. Siehe auch:    chmod
  2709.  
  2710. -----
  2711. man - Online-Hilfe ausgeben
  2712.  
  2713. Syntax: man [Kommando]
  2714.  
  2715. Dies ist der Kommandozeilen-Zugriff auf das Online-Manual der Shell. Ent-
  2716. spricht der Eingabe von "Kommando" und einem Druck auf die Help-Taste.
  2717.  
  2718. Mit "man irgendwas >NULL:" kann das Neuerstellen der Indexdatei nach einer
  2719. Änderung der Hilfsdatei erzwungen werden.
  2720.  
  2721. Siehe okami.doc für weitere Details.
  2722.  
  2723. -----
  2724. mem - Freien Hauptspeicher ermitteln
  2725.  
  2726. Syntax: mem [-b]
  2727.  
  2728. Wenn kein Flag angegeben ist, wird die Anzahl der freien RAM-Bytes (genauer:
  2729. die Länge des längsten zusammenhängenden Blocks) ausgegeben.
  2730. Wenn das Flag -b angegeben ist, wird die Größe der Speicherbänke 0 und 1 sowie
  2731. die Gesamtgröße des RAM-Speichers ausgegeben.
  2732.  
  2733. Wenn MiNT installiert ist, kann man die Anzahl der freien Bytes im RAM
  2734. mit "df -f X:" ermitteln.
  2735.  
  2736. -----
  2737. memex - Hauptspeicher auslesen
  2738.  
  2739. Syntax: memex [-acwls] Startadr [Anzahl]
  2740.  
  2741. Kopiert eine Anzahl von Speicherstellen nach StdOut. Falls Anzahl nicht
  2742. angegeben ist, wird Anzahl=1 gesetzt.
  2743.  
  2744. Flags:    -s    Vor dem Auslesen wird der Prozessor in den Supervisor-Modus
  2745.         versetzt. Dies ist sinnvoll beim Auslesen von System-
  2746.         adressen.
  2747.     -a    Liest Anzahl Bytes von Startadr an und gibt die Inhalte
  2748.         als Ascii-Zeichen aus. Bei nicht-druckbaren Zeichen werden
  2749.         die entsprechenden Ascii-Codes (z.B. NUL, SOH etc.) ausge-
  2750.         geben.
  2751.     -c    Liest Anzahl Bytes von Startadr an und gibt die Inhalte
  2752.         numerisch (im Bereich 0...0xff) aus.
  2753.     -w    Liest Anzahl Worte (je 16 bits) von Startadr an und gibt
  2754.         die Inhalte numerisch (im Bereich 0...0xffff) aus.
  2755.     -l    Liest Anzahl Langworte (je 32 bits) von Startadr an und
  2756.         gibt die Inhalte numerisch (im Bereich 0...0xffffffff)
  2757.         aus.
  2758.     Wenn keins von -a, -c, -w, -l angegeben ist, werden Anzahl Bytes
  2759.     von StartAdr an nach StdOut kopiert.
  2760.     Wenn bei -w oder -l eine ungerade Adresse angegeben ist, wird diese
  2761.     vor Benutzung dekrementiert.
  2762.  
  2763. Beispiele:
  2764. 1. Ermitteln der Anzahl der angeschlossenen Diskettenlaufwerke durch Aus-
  2765.    lesen der betreffenden System-Speicherstelle:
  2766.    memex -s -w 0x4a6
  2767. 2. Ausgeben von 100 Bytes von Speicherstelle 0x12345 an als Hexdump:
  2768.    memex 0x12345 100 | hd
  2769.  
  2770. -----
  2771. mkdir - Ordner erzeugen
  2772.  
  2773. Syntax: mkdir [-r] Ordner {Ordner}
  2774.  
  2775. Erzeugt die angegebenen Ordner. Wenn das Flag -r angegeben ist, werden voll-
  2776. ständige Pfade erzeugt, ansonsten nur die zuletzt angegebenen Ordner.
  2777. Achtung: wenn -r angegeben ist, wird der Basisname als der Name einer Datei
  2778. betrachtet und nicht angelegt. Um auch den Basisnamen als Ordner anzulegen,
  2779. muß er mit einem Backslash (oder Slash) abgeschlossen sein.
  2780.  
  2781. Beispiel:
  2782.     mkdir c:/work/test
  2783.             erzeugt den Ordner test als Unterordner von c:/work;
  2784.             wenn c:/work noch nicht existiert, kommt ein Fehler.
  2785.     mkdir -r c:/work/test/data
  2786.             erzeugt die Ordner c:/work und c:/work/test, falls
  2787.             noch nicht vorhanden. Eine Datei oder Ordner namens
  2788.             data wird nicht angelegt.
  2789.     mkdir -r c:/work/test/data/
  2790.             erzeugt die Ordner c:/work, c:/work/test und
  2791.             c:/work/test/data, falls noch nicht vorhanden.
  2792.     FILE=d:/data/files/x.out
  2793.     mkdir -r $FILE
  2794.             legt alle Ordner an, die für die Datei $FILE be-
  2795.             nötigt werden, also den Pfad d:/data/files. Die Datei
  2796.             x.out wird nicht angelegt. Nach diesem Kommando
  2797.             können z.B. Ausgaben nach $FILE umgeleitet werden.
  2798.             Wenn irgendwelche der Directories in $FILE bereits
  2799.             existieren, passiert nichts (auch keine Fehlermeldung),
  2800.             daher sollte dieser Aufruf immer vor der Verwendung
  2801.             von Dateien mit festem Pfad stehen.
  2802.  
  2803. Rückgabewert: Anzahl der erzeugten Ordner (oder Pfade bei -r).
  2804.  
  2805. -----
  2806. more - SIEHE pg
  2807.  
  2808. -----
  2809. mouse - Die Maus konfigurieren und abfragen
  2810.  
  2811. Syntax: mouse [+|-] [Form] [XVar [YVar]]
  2812.  
  2813. Dieses Kommando dient zwei verschiedenen Zwecken: 1) der Konfiguration
  2814. des Mauszeigers und 2) der Abfrage der Mauskoordinaten. Das Kommando muß
  2815. mit mindestens einem Parameter aufgerufen werden, es können aber alle
  2816. der möglichen Parameter gleichzeitig benutzt werden.
  2817. Es handelt sich hierbei um die Benutzung von AES-Funktionen, weswegen vor
  2818. Benutzung von mouse die Shell als Applikation bei GEM angemeldet werden
  2819. muß. Dies geschieht mit dem Kommando gon.
  2820.  
  2821. Parameter:
  2822.     +    der Mauszeiger wird sichtbar gemacht.
  2823.     -    der Mauszeiger wird unsichtbar gemacht.
  2824.     Form    es wird die Form des Mauszeigers eingestellt. Anstelle von
  2825.         Form steht eine Zahl zwischen 0 und 7, es bedeuten:
  2826.         0    Pfeil
  2827.         1    Cursor (Klammer)
  2828.         2    Biene
  2829.         3    Hand mit Zeigefinger
  2830.         4    flache Hand
  2831.         5    dünnes Fadenkreuz
  2832.         6    dickes Fadenkreuz
  2833.         7    umrahmtes Fadenkreuz
  2834.     XVar    der Name der Variablen, in die die x-Koordinate der Maus
  2835.         gespeichert werden soll. Anstelle von XVar steht ein belie-
  2836.         biger Variablenname außer den Ziffern 0 bis 7 (die als
  2837.         Variablennamen vom Benutzer ohnehin nicht verändert werden
  2838.         sollten.)
  2839.     YVar    analog für die y-Koordinate.
  2840.  
  2841. Beispiel:
  2842.     mouse + 0
  2843.         Der Mauszeiger wird sichtbar und auf einen Pfeil eingestellt.
  2844.     mouse X Y
  2845.     echo Die Mauskoordinaten sind $X und $Y
  2846.         Abfrage der Mauskoordinaten.
  2847.  
  2848. ACHTUNG: Die Einstellung der Maus erfolgt mit der AES-Funktion graf_mouse.
  2849. AES verwaltet das Ein- und Ausschalten der Maus in einem Puffer, d.h. wenn
  2850. die Maus dreimal ausgeschaltet wird, muß sie auch dreimal wieder eingeschal-
  2851. tet werden, bevor sie sichtbar wird. Da mehrfaches Einschalten der Maus zu
  2852. Verwirrungen bei GEM-Formularen führen kann, sollte man hier mit großer
  2853. Vorsicht vorgehen. Wenn es zu Problemen kommt, hilft jedoch meistens die
  2854. Rückkehr zum Desktop.
  2855. Die Mauskoordinaten werden mit der AES-Funktion graf_mkstate bestimmt.
  2856. Erfahrungsgemäß führt dies regelmäßig zu falschen Werten, da das Bildschirm-
  2857. scrolling die Mauskoordinaten beeinflußt. Zuverlässig sind die Werte zu-
  2858. mindest nach einem cls.
  2859.  
  2860. Siehe auch:    cursor
  2861.         keyb
  2862.         scr
  2863.  
  2864. -----
  2865. mv - Dateien umbenennen oder verschieben
  2866.  
  2867. Syntax: mv [-avif] Source {Source} Dest
  2868.  
  2869. Wenn Dest der Name eines existierenden Ordners ist, werden alle Dateien
  2870. Source in diesen Ordner verschoben. Der neue Dateiname der Dateien ist dann
  2871. Dest/`basename Source`.
  2872. Wenn Dest nicht der Name eines existierenden Ordners ist, wird die Datei
  2873. Source in die Datei Dest umbenannt. In diesem Fall darf nur ein Source an-
  2874. gegeben sein.
  2875. Die Source-Angaben dürfen erweiterte Wildcards enthalten. Die Maximalanzahl
  2876. der auf diese Weise benutzbaren Source-Dateien ist 100.
  2877. Source und Dest können in verschiedenen Ordnern und auf verschiedenen Lauf-
  2878. werken liegen. Beim Verschieben auf einem Laufwerk werden keine Daten außer
  2879. den Directoryeinträgen bewegt, wodurch das Verschieben sehr schnell geht.
  2880. Beim Verschieben auf ein anderes Laufwerk werden die Dateien kopiert und
  2881. dann die Sourcedateien gelöscht.
  2882. Ab TOS 1.4 können mit diesem Kommando auch die Namen von Ordnern geändert
  2883. werden. Es können allerdings keine Ordner verschoben werden. (mv kann das,
  2884. wenn Gemdos es auch kann)
  2885.  
  2886. Flags:
  2887.     -a    Die Quelldatei wird an die Zieldatei angehängt. Wenn dieses
  2888.         Flag angegeben ist, darf auch bei mehreren Source-Dateien
  2889.         `Dest' eine Datei sein.
  2890.     -v    Bei jeder bearbeiteten Datei wird eine Meldung ausgegeben.
  2891.         Das ist nützlich beim Kopieren von vielen Dateien auf einmal.
  2892.     -i    Fragt vor dem Überschreiben bereits vorhandener Zieldateien
  2893.         nach, ob diese überschrieben werden dürfen.
  2894.     -f    Überschreibt keine bereits vorhandenen Dateien.
  2895.  
  2896. Beispiele:
  2897. mv sh.ttp sh.prg        Umbenennen einer Datei.
  2898. mv sh.ttp d:/shell        Verschieben einer Datei in einen Ordner, der
  2899.                 neue Name ist d:/shell/sh.ttp.
  2900. mv e:/source/*.c a:/        Verschieben aller C-Dateien auf die Diskette.
  2901. mv -f e:/source/*.c a:/        dito, aber es werden keine Dateien über-
  2902.                 schrieben.
  2903. mv docs anleitg            Ändern eines Ordnernamens, nur bei >=TOS1.4.
  2904.  
  2905. Siehe auch:    cp
  2906.         ln
  2907.  
  2908. -----
  2909. num - Zahlen in verschiedenen Zahlensystemen ausgeben
  2910.  
  2911. Syntax: num [-bodhxa] Zahl {Zahl}
  2912.  
  2913. Die Zahlen werden in binärer, oktaler, dezimaler und hexadezimaler Form 
  2914. sowie als Ascii-Zeichen ausgegeben. Wenn das entsprechende Ascii-Zeichen
  2915. nicht druckbar ist, wird die Bezeichnung des Zeichens (z.B. NUL, SOH etc.)
  2916. ausgegeben.
  2917.  
  2918. Flags:    -b    Die Zahlen werden nur im Binärsystem ausgegeben.
  2919.     -o    Die Zahlen werden nur im Oktalsystem ausgegeben.
  2920.     -d    Die Zahlen werden nur im Dezimalsystem ausgegeben.
  2921.     -h    Die Zahlen werden nur im Hexadezimalsystem ausgegeben.
  2922.     -x    Wie -h.
  2923.     -a    Die Zahlen werden nur als Ascii-Zeichen ausgegeben.
  2924.  
  2925. Beispiele: 
  2926.  
  2927. 1) Ausgabe von 123 (dezimal) in allen Zahlensystemen:
  2928.         num 123
  2929.  
  2930. 2) Ausgabe von 123 (hex) in allen Zahlensystemen:
  2931.         num 0x123
  2932.  
  2933. 3) Ausgabe von -123 (dezimal) in Hex:
  2934.         num -x "-123"
  2935.    und NICHT: num -x -123
  2936.  
  2937. 4) Ausgabe der Konsolkonfigurationsbits durch Auslesen einer Systemadresse
  2938.    und Umformung ins Binärsystem:
  2939.         memex -sc 0x484 | xargs num -b
  2940.  
  2941.  
  2942. -----
  2943. overscan - OverScan ein- und ausschalten
  2944.  
  2945. Syntax: overscan [+|-]
  2946.  
  2947. Dieses Kommando dient zum Umschalten von OverScan und kann daher nur
  2948. sinnvoll eingesetzt werden, wenn OverScan samt der zugehörigen Software
  2949. installiert ist. Das Verwenden ohne OverScan ist allerdings trotzdem
  2950. gefahrlos möglich.
  2951. Wenn + angegeben ist, wird in den OverScan-Modus geschaltet. Wenn - ange-
  2952. geben ist, wird in den Normalmodus geschaltet. Wenn kein OverScan installiert
  2953. ist, ist diese Art des Aufrufes ohne Wirkung.
  2954. Wenn kein Parameter angegeben ist, wird + oder - ausgegeben, je nachdem ob
  2955. der OverScan- oder der Normalmodus aktiv ist. Wenn kein OverScan installiert
  2956. ist, wird - ausgegeben.
  2957.  
  2958. Beispiel:
  2959. Während der Ausführung eines Programms soll auf Normalmodus geschaltet werden.
  2960.  
  2961.     # Modus speichern
  2962.     MODE=`overscan`
  2963.     # umschalten
  2964.     overscan -
  2965.       ............................ Aufruf des Programms
  2966.     # Modus wiederherstellen
  2967.     overscan $MODE
  2968.     unset MODE
  2969.  
  2970. Der Rückgabewert ist 0, wenn der Normalmodus-, und 1, wenn der OverScan-Modus
  2971. aktiv ist, und -1 bei einem Aufruffehler. Wenn + oder - angegeben ist, wird
  2972. 1 oder 0 je nach der Einstellung vor der Umschaltung (also vor Aufruf des
  2973. Kommandos) ausgegeben.
  2974.  
  2975. -----
  2976. pg, more - Dateien seitenweise ausgeben
  2977.  
  2978. Syntax: pg|more {File}
  2979.  
  2980. StdOut oder, falls angegeben, File wird in Seiten zu je $PAGELEN Zeilen
  2981. ausgegeben. Nach jeder Seite kann der Anwender:
  2982.     mit der Leertaste die nächste Seite anzeigen,
  2983.     mit der Taste D die nächste halbe Seite anzeigen,
  2984.     mit der RETURN-Taste die nächste Zeile anzeigen,
  2985.     mit der Taste B die Datei an den Anfang zurückspulen,
  2986.     mit der Taste Q die Ausgabe abbrechen und mit der nächsten Datei
  2987.         fortfahren,
  2988.     mit der ESC-Taste das Kommando abbrechen, es werden keine weiteren
  2989.         Dateien mehr angezeigt.
  2990.  
  2991. -----
  2992. pmd - Post-Mortem-Dump
  2993.  
  2994. Syntax: pmd
  2995.  
  2996. Dieses Kommando kann verwendet werden, um Informationen über ein Programm zu
  2997. erhalten, das von einer Exception durch Bomben beendet wurde. Es erzeugt eine
  2998. Ausgabe, die die Inhalte der Register d0 bis d7 und a0 bis a6 sowie des
  2999. usp (a7), ssp (a7") und des Programmzählers (pc) enthält. Außerdem wird die
  3000. Nummer der die Bomben auslösenden Exception ausgegeben und die obersten sechs
  3001. 16bit-Worte des Stacks, letztere sowohl in Hex- als auch in Ascii-Notation.
  3002. Nicht-druckbare Zeichen (solche mit Ascii-Code<32) werden als dicke Punkte
  3003. ausgegeben.
  3004. Die Nummer der Exception wird dezimal, alle anderen Angaben hexadezimal an-
  3005. gegeben. (Da die Nummer der Exception normalerweise kleiner als 10 ist,
  3006. macht es keinen Unterschied, ob man sie dezimal oder hexadezimal ausgibt.)
  3007.  
  3008. Wenn noch keine Exception aufgetreten ist, durch die Bomben hervorgerufen
  3009. wurden, sind die Informationen ungültig. Es erscheint dann vor der Ausgabe
  3010. die Meldung "WARNING: Information void".
  3011.  
  3012. -----
  3013. ps - Prozeßliste
  3014.  
  3015. Syntax: ps [-bfc]
  3016.  
  3017. WENN MINT INSTALLIERT IST:
  3018. Es wird eine Liste der augenblicklich aktiven Prozesse erzeugt. Dabei handelt
  3019. es sich um eine Ausgabe des Inhalts des Directories u:/proc.
  3020. Die Ausgabe hat folgendes Format:
  3021.  
  3022. 000  WEV    00:00:00   4096        mint
  3023.  
  3024. Dabei ist:
  3025.     000        Die Prozeßnummer.
  3026.     WEV        Der Prozeßstatus. Siehe unten.
  3027.     00:00:00    Die Laufzeit des Prozesses.
  3028.     4096        Der Speicherbedarf des Prozesses in Bytes.
  3029.     mint        Der Name des Prozesses.
  3030.  
  3031. In diesem Fall wäre der Dateiname des Prozesses also u:/proc/mint.000 .
  3032. Folgende Statusangaben sind möglich:
  3033.     RUN    Der Prozeß ist augenblicklich aktiv.
  3034.     RDY    Der Prozeß ist inaktiv, aber bereit, aktiv zu werden.
  3035.     TSR    Der Prozeß wurde beendet, ist aber noch resident.
  3036.     WEV    Der Prozeß wartet auf ein Ereignis (z.B. auf das Ende eines
  3037.         Kindprozesses).
  3038.     WIO    Der Prozeß wartet auf eine Ein/Ausgabe.
  3039.     ZOM    Es ist ein Zombie-Prozeß.
  3040.     STP    Der Prozeß wurde durch ein Signal beendet.
  3041.  
  3042. Die ps übergebenen Parameter und Flags werden ignoriert.
  3043. Hinweis: Es ist u.U. günstiger, das mit Mint gelieferte ps.ttp zu verwenden,
  3044. da es genauere Angaben macht, die über das, was an der Dateiliste in u:/proc
  3045. zu sehen ist, hinausgehen. Um ps.ttp anstelle des eingebauten ps zu verwenden,
  3046. setzt man folgendes ins Profile:
  3047.  
  3048.     alias ps e:/mint/bin/ps.ttp
  3049.  
  3050. natürlich mit dem jeweiligen Dateinamen von ps.ttp.
  3051.  
  3052.  
  3053. WENN MINT NICHT INSTALLIERT IST:
  3054. Das Kommando ps erzeugt eine Liste der augenblicklich laufenden Programme
  3055. (Prozesse). Anders als unter Unix, wo mehrere Prozesse gleichzeitig aktiv
  3056. sein können, ist unter TOS nur jeweils ein Prozeß aktiv. Dieser kann ein
  3057. anderes Programm starten und auf dessen Beendigung warten (mit der Be-
  3058. triebssystem-Funktion Pexec). Das so gestartete Programm kann wiederum
  3059. ein anderes starten usw. Mit ps wird die so erzeugte Reihe von Programmen
  3060. ausgegeben.
  3061. Nach Eingabe von ps erscheint eine Liste der Prozesse in der Reihenfolge
  3062. des Aufrufs. Der augenblickliche Prozeß steht oben, der zuerst vom Desk-
  3063. top gestartete Prozeß steht unten. Das Desktop selber erscheint nicht in
  3064. der Liste.
  3065.  
  3066. Flags:
  3067.     -b    Zu jedem Prozeß wird die Adresse von dessen Basepage aus-
  3068.         gegeben.
  3069.     -f    Wenn dieses Flag angegeben ist, erscheinen die vollen
  3070.         Pfadnamen, unter denen die Programme aufgerufen wurden.
  3071.         Wenn -f nicht angegeben ist, erscheint nur der reine
  3072.         Dateiname (Basisname).
  3073.     -c    Zu jedem Prozeß wird dessen Kommandozeile ausgegeben.
  3074.         VORSICHT: arbeitet unzuverlässig, da bei Programmstart die
  3075.         DTA auf diesen Bereich zeigt. Programme, die die DTA nicht
  3076.         selber ändern, überschreiben bei jedem DTA-Zugriff diesen
  3077.         Bereich. Der Bereich wird auch überschrieben, wenn vor
  3078.         Änderung der DTA-Adresse Betriebssystemfunktionen wie
  3079.         rsrc_load aufgerufen werden.
  3080.  
  3081. Der Kern des ps-Kommandos, nämlich der Schritt von der Adresse der Basepage
  3082. zum Aufrufpfad des zugehörigen Programms, stammt aus der Datei initargs.c
  3083. aus der Library des Sozobon C-Systems.
  3084.  
  3085. ACHTUNG: Die einzige Angabe, auf die man sich verlassen kann, ist die
  3086. Adresse der Basepage. Da TOS den Aufrufpfad eines Programms nicht in
  3087. der Basepage abspeichert, benutzt ps einen Trick: es holt mit Hilfe der
  3088. Basepage-Adresse die gespeicherte Adresse des USP (User-Stack-Pointer) des
  3089. jeweiligen Programms und bekommt über diese den ersten Parameter der zu-
  3090. letzt aufgerufenen Funktion. Dies ist in jedem Fall Pexec, daher ist der
  3091. erste Parameter der Pfadname des aufgerufenen Programms. (Dieser Trick stammt
  3092. aus den Libraries von Sozobon C.) Dies ist ein ausgesprochen schmutziger
  3093. Trick, der in zukünftigen Betriebssystemversionen (wenn sie über Speicher-
  3094. schutz oder virtuellen Speicher verfügen) zum Absturz der Shell führen kann.
  3095. Es wird empfohlen, das ps-Kommando ohne MiNT nicht zu benutzen.
  3096.  
  3097. Siehe auch:    basep
  3098.  
  3099. -----
  3100. putscr - Bildschirminhalt wiederherstellen
  3101.  
  3102. Syntax: putscr [-(f|s Dateiname)]
  3103.  
  3104. Ein zuvor mit getscr gespeicherter Bildschirminhalt wird wiederhergestellt.
  3105. Es ist möglich, einen einmal gespeicherten Bildschirm mehrmals zu restau-
  3106. rieren.
  3107.  
  3108. Flags:
  3109.     -f    Der Speicherbereich wird freigegeben. Das Bild wird nicht
  3110.         wiederhergestellt.
  3111.     -s    Der Speicherbereich wird in die angegebene Datei gespeichert.
  3112.         Wenn eine Datei mit dem angegebenen Namen bereits existiert,
  3113.         wird sie überschrieben.
  3114.  
  3115. Beispiel:
  3116.     getscr - titel.doo
  3117.     putscr
  3118.     read
  3119.     cls
  3120.     putscr -f
  3121.             Mit dieser Befehlsfolge wird ein Doodle-Bild (32000
  3122.             Bytes) aus der Datei titel.doo geladen und angezeigt.
  3123.             Die Shell wartet auf einen Tastendruck, dann wird der
  3124.             Bildschirm gelöscht und der Speicherbereich wieder
  3125.             freigegeben.
  3126.             Mit dieser Befehlsfolge kann ein Shellscript, z.B.
  3127.             das Profile, eine Grafik als Titelbild ausgeben.
  3128.  
  3129.     getscr
  3130.     putscr -s shell.doo
  3131.     putscr -f
  3132.             Der aktuelle Bildschirminhalt wird im Doodle-Format
  3133.             in die Datei shell.doo gespeichert (Hardcopy).
  3134.  
  3135.  
  3136. Siehe auch: getscr
  3137.         showpic (externes Kommando)
  3138.  
  3139. -----
  3140. pwd - Aktuelles Directory ermitteln
  3141.  
  3142. Syntax: pwd [-a|{Drive}]
  3143.  
  3144. Schreibt das aktuelle Verzeichnis der angegebenen Laufwerke oder, wenn
  3145. kein Laufwerk angegeben ist, das aktuelle Verzeichnis des aktuellen
  3146. Laufwerks nach StdOut. Wenn -a angegeben ist, werden die aktuellen Verzeich-
  3147. nisse aller angeschlossenen Laufwerke ausgegeben.
  3148. pwd ohne Laufwerksangabe entspricht "echo $CWD".
  3149.  
  3150. Beispiele:
  3151.     pwd A: B: C: D: E: F:    ist äquivalent zu
  3152.     pwd abcdef        oder, wenn das alle Laufwerke sind, zu
  3153.     pwd -a
  3154.  
  3155. -----
  3156. raw - Ausgabe auf der "Raw Console"
  3157.  
  3158. Syntax: raw [-bnc] {Datei}
  3159.  
  3160. Als "Raw Console" oder RAWCON wird der Bildschirm ohne VT52-Emulator und
  3161. Steuerzeicheninterpretation bezeichnet. Die Ausgabe eines CR-Zeichens nach
  3162. RAWCON erzeugt also kein Zeilenende, sondern das "CR"-Schriftzeichen. Mit
  3163. dem Kommando raw kann eine Datei (oder StdIn, wenn keine Datei angegeben
  3164. ist) auf RAWCON ausgegeben werden. Am Ende der Datei wird jedoch ein
  3165. Zeilenvorschub eingefügt, damit das nächste Prompt in einer neuen Zeile
  3166. erscheint. Das kann mit dem Flag -c unterbunden werden.
  3167.  
  3168. Flags:    -b    die Datei wird binär geöffnet, es findet also keine Über-
  3169.         setzung CR/LF -> LF statt.
  3170.     -n    alle CR-Zeichen werden statt über RAWCON über den VT52-
  3171.         emulator ausgegeben, bewirken also tatsächliche Zeilen-
  3172.         vorschübe. Alle anderen Zeichen werden nicht übersetzt.
  3173.     -c    die Ausgabe eines Zeilenvorschubs am Ende jeder Datei
  3174.         wird unterbunden.
  3175.  
  3176. Beispiele:
  3177.  
  3178.     raw cmds2.o cmds3.o cmds4.o
  3179. gibt die angegebenen Dateien auf RAWCON aus. An Ende jeder Datei wird ein
  3180. Zeilenvorschub erzeugt.
  3181.  
  3182.     hd -b data.bin | raw -n
  3183. Der Hexdump wird auf RAWCON ausgegeben. CR-Zeichen im Hexdump bewirken
  3184. tatsächliche Zeilenvorschübe in der Ausgabe.
  3185.  
  3186. Bemerkung:
  3187. 1) Die Ausgabe erfolgt mit der Bios-Funktion Bconout.
  3188. 2) Dieses Kommando erzeugt keine Ausgabe nach StdOut, kann also nicht
  3189. umgeleitet werden.
  3190.  
  3191. -----
  3192. rdti - Konfiguration der Shell mittels desktop.inf
  3193.  
  3194. Syntax: rdti [-dclxv] [Datei]
  3195.  
  3196. Mit diesem Kommando ist es möglich, einige Konfigurationen der Shell direkt
  3197. aus der desktop.inf-Datei zu lesen, die vom Desktop beim Systemstart be-
  3198. nutzt wird. Diese Informationen sind:
  3199.     aktuelles Directory,
  3200.     Bezeichnungen der Laufwerke,
  3201.     Extender für ausführbare Programme.
  3202. Jede dieser Eigenschaften läßt sich mit einem der Flags ausblenden, so
  3203. daß man sich beim Aufruf von rdti die gewünschten Konfigurationen ein-
  3204. stellen kann. Wenn keine Flags angegeben sind, werden alle diese Ini-
  3205. tialisierungen durchgeführt.
  3206. Wenn keine Datei angegeben ist, wird die Datei /desktop.inf auf dem
  3207. Bootlaufwerk benutzt. Es kann nur eine Datei angegeben werden, Wildcards
  3208. sind nicht erlaubt, der Aufruf "rdti c:/desk*.inf" ist also unzulässig.
  3209.  
  3210. Flags:
  3211.     -d    Wenn dieses Flag nicht angegeben ist, wird das Directory
  3212.         von jedem geöffneten Fenster ausgegeben.
  3213.     -c    Wenn dieses Flag nicht angegeben ist, wird ein cd in
  3214.         das Directory von jedem geöffneten Fenster ausgeführt.
  3215.         Auf diese Weise kann man das aktuelle Directory auf das
  3216.         des obersten Fensters einstellen.
  3217.     -l    Wenn dieses Flag nicht angegeben ist, liest die Shell die
  3218.         Bezeichnungen der Laufwerke (die im Desktop unter den
  3219.         Laufwerk-Icons stehen). Diese Bezeichnungen werden z.B.
  3220.         von den internen Kommandos drive und df benutzt. Die
  3221.         alten Einstellungen der Bezeichnungen gehen dabei ver-
  3222.         loren.
  3223.     -x    Wenn dieses Flag nicht angegeben ist, initialisiert die
  3224.         Shell die Variable XEXT anhand der Extender, die in der
  3225.         Datei als Extender von ausführbaren Programmen (egal ob
  3226.         GEM, TOS oder TTP) eingetragen sind. Der alte Inhalt von
  3227.         XEXT geht dabei verloren, es sei denn, in der Datei sind
  3228.         keine Extender definiert.
  3229.     -v    Wenn dieses Flag angegeben ist, gibt rdti Informationen
  3230.         über den Dateinamen sowie die durchgeführten Konfigura-
  3231.         tionen aus.
  3232.  
  3233. Siehe auch:    drive
  3234.  
  3235. -----
  3236. read - Variablen einlesen
  3237.  
  3238. Syntax: read [[-] Var]
  3239.  
  3240. Eine Zeile wird von StdIn gelesen und, falls vorhanden, in der Variablen
  3241. Var abgelegt. Falls eine Variable mit Namen Var bereits existiert, so wird
  3242. der alte Wert überschrieben.
  3243. Wenn das Flag - angegeben ist, werden in der Eingabe Steuersequenzen und
  3244. Shellvariablen expandiert.
  3245.  
  3246. Beispiele:
  3247. 1) Einlesen einer Benutzereingabe:
  3248.     echo Bitte geben Sie Ihren Namen ein
  3249.     read NAME
  3250.     echo Der Name ist $NAME
  3251.         
  3252. 2) Einlesen der Anzahl der freien RAM-Bytes in eine Variable:
  3253.     mem | read RAM
  3254.     echo Es sind $RAM Bytes frei
  3255.    (ist analog zu "RAM=`mem`")
  3256.  
  3257. 3) Warten auf Druck auf ENTER
  3258.     echo Bitte ENTER drücken
  3259.     read
  3260.  
  3261. 4) Benutzung des Flags "-":
  3262.     read x
  3263.     $PATH                <------------- Eingabe
  3264.    speichert die Zeichenkette "$PATH" in der Variablen x.
  3265.     read - x
  3266.     $PATH                <------------- Eingabe
  3267.    speichert den Wert der Shellvariablen PATH in der Variablen x.
  3268.    
  3269. -----
  3270. readonly - Variablen schreibschützen
  3271.  
  3272. Syntax: readonly [[-] {Variable}]
  3273.  
  3274. Schreibgeschützte Variablen können nicht gelöscht und ihre Werte können
  3275. nicht verändert werden. Mit dem readonly-Kommando kann das Schreibschutz-
  3276. Flag von Variablen gesetzt und gelöscht werden.
  3277. Wenn readonly ohne Parameter aufgerufen wird, wird eine Liste aller schreib-
  3278. geschützter Variablen ausgegeben.
  3279. Ansonsten wird das Schreibschutz-Flag bei allen angegebenen Variablen ge-
  3280. setzt oder, wenn - angegeben ist, gelöscht.
  3281. Die Namen der Variablen können dabei im Format der erweiterten Wildcards
  3282. angegeben werden, z.B. "readonly a*" betrifft alle Variablen, deren Name
  3283. mit a beginnt. Näheres siehe okami.doc.
  3284. Es können nur Variablen schreibgeschützt werden, die vom Benutzer angelegt
  3285. oder verändert worden sind, also den Status "USR" haben (siehe "vars").
  3286. Um Variablen schreibzuschützen, die von der Shell selber angelegt wurden,
  3287. z.B. PIPDIR, hilft folgender Trick:
  3288.     PIPDIR=$PIPDIR
  3289.     readonly PIPDIR
  3290. Durch die Zuweisung wird der Wert der Variablen nicht verändert, die
  3291. Variable erhält aber den USR-Status.
  3292.  
  3293. Beispiele:
  3294.     readonly
  3295.                 erzeugt eine Liste aller schreibgeschützter
  3296.                 Variablen.
  3297.     readonly VAR1 VAR2 KEY
  3298.                 die Variablen VAR1, VAR2 und KEY werden
  3299.                 schreibgeschützt.
  3300.     readonly - VAR1 KEY
  3301.                 der Schreibschutz der Variablen VAR1 und
  3302.                 KEY wird entfernt.
  3303.     readonly *E*
  3304.                 alle Variablen, deren Name ein E enthält,
  3305.                 werden schreibgeschützt.
  3306.  
  3307. Siehe auch:    export
  3308.         vars
  3309.  
  3310. -----
  3311. rm - Dateien löschen
  3312.  
  3313. Syntax: rm [-friqv] File {File}
  3314.  
  3315. Alle Dateien, die einem der Muster File entsprechen, werden gelöscht.
  3316.  
  3317. Flags:    -f    Es werden keine Fehlermeldungen bzgl. fehlenden Dateien
  3318.         ausgegeben. Außerdem werden auch Dateien, bei denen das
  3319.         Read Only-Flag gesetzt ist, gelöscht.
  3320.     -i    Vor dem Löschen werden die Namen aller Dateien angezeigt,
  3321.         und der Anwender wird gefragt, ob er diese löschen will
  3322.         oder nicht. Als Nein gilt die Eingabe eines Wortes, das
  3323.         mit n oder N beginnt, als Ja gilt jede andere Eingabe
  3324.         (auch ein Druck auf ENTER bei leerer Eingabe).
  3325.     -q    Es wird interaktiv gelöscht, d.h. der Anwender wird bei
  3326.         jeder Datei gefragt, ob er diese löschen will oder nicht.
  3327.     -r    Es wird rekursiv gelöscht, d.h. wenn Ordner angegeben sind,
  3328.         so werden die Ordner mitsamt allen enthaltenen Dateien und
  3329.         Unterordnern gelöscht. Wenn das Flag -f nicht gesetzt ist,
  3330.         erfolgt bei allen schreibgeschützten Dateien eine Nachfrage.
  3331.         Das Flag -q ist ohne Wirkung!
  3332.     -v    Die Namen der gelöschten Dateien werden auf dem Bildschirm
  3333.         ausgegeben.
  3334.  
  3335. Achtung: Ordner können mit diesem Kommando nur gelöscht werden, wenn das
  3336. Flag -r angegeben ist. Das normale Kommando zum Löschen von Ordnern ist
  3337. rmdir.
  3338.  
  3339. Beispiele:
  3340.  
  3341. rm xyz.bak
  3342.             Löschen einer Datei.
  3343. rm *.bak
  3344.             Löschen aller .bak-Dateien.
  3345. rm -f *.bak *.dup *.out
  3346.             Löscht auch schreibgeschützte Dateien.
  3347. rm -rf /*
  3348.             Löscht ohne Nachfrage alles!
  3349. rm -rfv /tmp
  3350.             Löscht den Ordner /tmp mit allen enthaltenen Dateien
  3351.             und Unterordnern. Die Namen der gelöschten Dateien
  3352.             werden auf dem Bildschirm ausgegeben.
  3353.  
  3354. Rückgabewert:
  3355.     -1    Aufruffehler
  3356.     sonst    Anzahl der gelöschten Dateien (und Ordner bei -r).
  3357.  
  3358. Siehe auch:    rmdir
  3359.  
  3360. -----
  3361. rmdir - Leere Ordner löschen
  3362.  
  3363. Syntax: rmdir Path {Path}
  3364.  
  3365. Die angegebenen Ordner werden gelöscht. Es dürfen keine Dateien oder Unter-
  3366. ordner in Path enthalten sein. Um einen Ordner mitsamt seinem Inhalt zu
  3367. löschen, gibt es das Kommando rm -r.
  3368.  
  3369. Rückgabewert: Anzahl der gelöschten Ordner.
  3370.  
  3371. Siehe auch:    rm
  3372.  
  3373. -----
  3374. rpn - SIEHE upn
  3375.  
  3376. -----
  3377. rsconf - Konfiguration der RS232-Schnittstelle
  3378.  
  3379. Syntax: rsconf [-s(Speed] [(+|-)x] [(+|-)r] [-p(0|1|2)] [-b(Bits)] [-w(Word)]
  3380.  
  3381. Die serielle Schnittstelle (Modemport) wird konfiguriert. Die Parameter
  3382. haben folgende Bedeutung:
  3383.  
  3384.     -s    Übertragungsgeschwindigkeit. Mögliche Werte für Speed sind:
  3385.         19200, 9600,4800,3600,2400,2000,1800,1200,600,300,200,
  3386.         150,134,110,75,50 (alles in baud). Der Defaultwert ist 9600.
  3387.     -x    XON/XOFF wird abgeschaltet    (Default).
  3388.     +x    XON/XOFF wird eingeschaltet.
  3389.     -r    RTS/CTS  wird abgeschaltet    (Default).
  3390.     +r    RTS/CTS  wird eingeschaltet.
  3391.     -p    Parität. Mögliche Angaben sind:
  3392.         0 (keine Parität), 1 (ungerade), 2 (gerade). Der Default-
  3393.         wert ist 0.
  3394.     -b    Anzahl der Start- und Stopbits. Mögliche Angaben:
  3395.         Bits    Startbits    Stopbits    Übertragung
  3396.         0    0        0        Synchron  (Default)
  3397.         1    1        1        Async.
  3398.         1.5    1        1.5        Async.
  3399.         2    1        2        Async.
  3400.     -w    Wortlänge. Mögliche Angaben für Word sind:
  3401.         8,7,6,5 (in bits). Der Defaultwert ist 8.
  3402.  
  3403. Beispiele:
  3404.     rsconf
  3405.         stellt ein: 9600 baud, kein XON/XOFF, kein RTS/CTS, keine
  3406.         Parität, 0 Start- und Stopbits, Wortlänge 8 bit.
  3407.     rsconf -s4800
  3408.         wie oben, nur mit 4800 baud.
  3409.     rsconf -s19600 +x +r -p1 -b2 -w7
  3410.         stellt ein: 19600 baud, XON/XOFF, RTS/CTS, ungerade Pari-
  3411.         tät, 1 Startbit, 2 Stopbits, Wortlänge 7 bit.
  3412.  
  3413. -----
  3414. scr - Bildschirmfarbe einstellen
  3415.  
  3416. Syntax: scr [-bwlhg]
  3417.  
  3418. Einstellen von Hinter- und Vordergrundfarbe sowie der Anzahl der Zeilen auf
  3419. dem Bildschirm (nur in hoher Auflösung sinnvoll).
  3420. Flags:    -b (black)    Einstellen von dunklem Hinter- und hellem Vorder-
  3421.             grund.
  3422.     -w (white)    Einstellen von hellem Hinter- und dunklem Vorder-
  3423.             grund.
  3424.     -g (gray)    Der Bildschirm wird mit dem grauen Desktop-Hinter-
  3425.             grundmuster gefüllt. Das ist sinnvoll vor dem Starten
  3426.             von Gem-Programmen, z.B. in der Gemexec-Funktion.
  3427.     -l (low)    Einstellen von 24 Zeilen (normale Schrift).
  3428.     -h (high)    Einstellen von 48 Zeilen (kleine Schrift).
  3429.  
  3430. Für die Einstellung der Zeilenanzahl mit -l und -h gilt:
  3431.  
  3432. 1) gon muß aktiv sein.
  3433. 2) Nach der Einstellung wird der Bildschirm gelöscht.
  3434. 3) Die neue Zeilenanzahl wird in der Shellvariablen COLUMNS abgelegt.
  3435. 4) Die Einstellung beruht auf einer undokumentierten VDI-Funktion, zu
  3436.    der das Profi-Buch sagt: "Verwendung auf eigene Gefahr". Abstürze sind
  3437.    möglich.
  3438.  
  3439. Wenn Overscan aktiv ist, gon aber nicht, dann kann der Bildschirm mit
  3440. -g nicht grau gefärbt werden. In diesem Fall wird er bei -g nur gelöscht.
  3441. Das ist ein Grund mehr, gon als eins der ersten Kommandos im profile
  3442. auszuführen.
  3443.  
  3444. Siehe auch:    cursor
  3445.         gemexec
  3446.         keyb
  3447.         mouse
  3448.         overscan
  3449.  
  3450. -----
  3451. seek: Dateien rekursiv auflisten
  3452. Syntax: seek Startdirectory Suchmaske
  3453.  
  3454. Findet alle Dateien ab dem angegebenen Startdirectory, die auf die ange-
  3455. gebene Suchmaske passen. Es wird rekursiv in allen Ordnern gesucht.
  3456.  
  3457. Beispiel:
  3458. 1) Ausgabe aller Shellscripts, die unter dem Home-Directory liegen:
  3459.     seek $HOME *.sh
  3460.         
  3461. 2) Listen aller Dateien, die auf einer Festplattenpartition liegen:
  3462.     seek c:\ *
  3463.         
  3464. 3) Listen aller C-Quelldateien ab dem aktuellen Directory:
  3465.     seek . *.c
  3466.  
  3467. Wesentlich mächtiger als seek ist das Kommando find.
  3468.  
  3469. -----
  3470. set - Shell-Flags einstellen
  3471.  
  3472. Syntax: set [-|([+Flags] [-Flags])]
  3473.  
  3474. Shell-Flags werden gesetzt oder gelöscht, oder es wird der Status
  3475. aller Shell-Flags ausgegeben.
  3476. Bei der Verwendung ohne Parameter wird der Status aller Shell-Flags
  3477. mit einer kurzen Erklärung des jeweiligen Flags ausgegeben.
  3478. Bei der Verwendung mit dem Parameter - wird der Status aller Shell-Flags
  3479. in einer Form ausgegeben, die später als Parameter für set benutzt werden
  3480. kann. Dies ist nützlich, wenn in einem Shellscript ein Flag lokal geändert
  3481. werden soll:
  3482.     A=`set -`
  3483.     set +x
  3484.     ................... (irgendwelche Kommandos)
  3485.     set $A
  3486.     unset A
  3487. Der Status der Flags wird in die Variable A eingelesen. Diese Variable wird
  3488. später benutzt, um die Änderung (set +x) ggfs. rückgängig zu machen.
  3489.  
  3490. Bei der Verwendung mit einem anderen Parameter als einem einzelnen Minus-
  3491. zeichen wird das entsprechende Flag gesetzt (+) oder zurückgesetzt (-).
  3492. Beispiel: set +x setzt das Flag x.
  3493.       set -x löscht das Flag x.
  3494.  
  3495. Eine Liste der zu verwendenden Flags gibt es unter dem Stichwort
  3496. "shellflags" in dieser Datei.
  3497.  
  3498. -----
  3499. shellflags - Flags, die mit dem set-Kommando eingestellt werden können
  3500.  
  3501. Die folgenden Flags können benutzt werden:
  3502.  
  3503.     b    Wenn dieses Flag gesetzt ist, wird in einer Eingabezeile
  3504.         jeder Slash (/) in einen Backslash (\) umgeformt. Dadurch
  3505.         ist es möglich, Pfadnamen wie in Unix üblich mit Slashes
  3506.         zu trennen (was einfacher ist, da man auf dem ST für einen
  3507.         Slash zwei, für einen Backslash aber drei Tasten gleich-
  3508.         zeitig drücken muß). Wenn das Flag nicht gesetzt ist, werden
  3509.         keine Slashes in Backslashes umgeformt.
  3510.         Die Umformung betrifft sämtliche Eingaben, also auch Zu-
  3511.         weisungen an Variablen, Zeilen aus Shellscripts etc.
  3512.         Nach dem Start der Shell ist dieses Flag gesetzt.
  3513.  
  3514.     l    Wenn dieses Flag gesetzt ist, werden Dateinamen in
  3515.         Kleinbuchstaben ausgegeben. Wenn das Flag nicht gesetzt ist,
  3516.         werden Dateinamen so ausgegeben, wie sie auf dem Datenträger
  3517.         gespeichert sind (in Großbuchstaben).
  3518.         Dieses Flag beeinflußt nicht die Möglichkeit, Dateinamen
  3519.         in Kleinbuchstaben einzugeben.
  3520.         Nach dem Start der Shell ist dieses Flag gesetzt.
  3521.  
  3522.     s    Wenn dieses Flag gesetzt ist, schreibt die Shell nach dem
  3523.         Programmende durch Eingabe von exit oder shutdown oder 
  3524.         durch Druck auf Ctrl V das aktuelle Directory ($CWD) in
  3525.         die Datei $HOME\wdir. Die Datei wird unsichtbar gemacht.
  3526.         Wenn das Profile ($HOME\profile) folgende Zeilen enthält:
  3527.             set +s
  3528.             cd `cat $HOME\wdir`
  3529.         dann wird die Shell nach jedem Aufruf auf das Directory
  3530.         eingestellt, in dem sie zuletzt verlassen wurde. Dies ist
  3531.         sehr sinnvoll beim Einsatz einer Festplatte.
  3532.         Nach dem Start der Shell ist dieses Flag nicht gesetzt.
  3533.  
  3534.     x    Vor dem Ausführen einer Binärdatei (PRG, TOS etc.) wird
  3535.         das aktuelle Verzeichnis auf das Verzeichnis umgestellt,
  3536.         in dem sich die Datei befindet. Nach der Ausführung der
  3537.         Datei wird das aktuelle Verzeichnis wieder zurückgesetzt.
  3538.         Nach dem Start der Shell ist dieses Flag nicht gesetzt.
  3539.  
  3540.     c    Vor dem Ausführen eines Shellscripts wird das aktuelle
  3541.         Verzeichnis auf das Verzeichnis umgestellt, in dem sich 
  3542.         das Shellscript befindet. Nach dem Ende des Scripts wird
  3543.         das aktuelle Verzeichnis wieder zurückgesetzt.
  3544.         Nach dem Start der Shell ist dieses Flag nicht gesetzt.
  3545.  
  3546.     h    Wenn dieses Flag gesetzt ist, wird die Datei, aus der bei
  3547.         Druck auf Help die Hilfstexte zu den einzelnen Kommandos
  3548.         gelesen werden (i.d.R. diese Datei, commands.doc), resident
  3549.         im Speicher gehalten. Wenn das Flag nicht gesetzt ist, wird
  3550.         die Datei bei jedem Druck auf Help neu geladen. Nach dem
  3551.         Start der Shell ist dieses Flag gesetzt, und der einzige
  3552.         Grund, es zu löschen, ist Speicherplatzmangel. Um ein resi-
  3553.         dentes Helpfile aus dem Speicher zu entfernen, dieses Flag
  3554.         löschen (set -h), ein beliebiges Kommando eingeben und Help
  3555.         drücken.
  3556.         Nach dem Start der Shell ist dieses Flag gesetzt.
  3557.  
  3558.     H    Wenn dieses Flag gesetzt ist, speichert die Shell nach dem
  3559.         Laden der Hilfsdatei (siehe h) den Dateiindex in einer
  3560.         seperaten Datei bzw. liest den Index aus dieser Datei. Wenn
  3561.         dieses Flag nicht gesetzt ist, wird der Index immer im Speicher
  3562.         neu erstellt. Siehe auch okami.doc zum Thema Tastatureingabe
  3563.         und Help-Taste.
  3564.         Nach dem Start der Shell ist dieses Flag gesetzt.
  3565.  
  3566.     u    Wenn dieses Flag gesetzt ist, werden die Standard-Streams,
  3567.         also die Dateien, die für die Ein-Ausgabe-Umleitung und
  3568.         das Pipelining benutzt werden, im Binärmodus geöffnet. Das
  3569.         bedeutet, daß in der Ein- und Ausgabe über diese Dateien
  3570.         die Übersetzung zwischen CR/LR und CR abgeschaltet wird.
  3571.         Nach dem Start der Shell ist dieses Flag nicht gesetzt.
  3572.  
  3573.     w    Wenn dieses Flag gesetzt ist, interpretiert die Shell die
  3574.         erweiterten Wildcards * und []. Wenn das Flag nicht gesetzt
  3575.         ist, werden alle Wildcards wie unter TOS behandelt. Dies be-
  3576.         trifft nur die Angabe von Dateinamen, nicht die sonstige Ver-
  3577.         wendung der erweiterten Wildcards z.B. bei Verwendung der
  3578.         Help-Taste.
  3579.         Nach dem Start der Shell ist dieses Flag gesetzt.
  3580.  
  3581.     p    Wenn dieses Flag gesetzt ist, wird beim Start von Binärpro-
  3582.         grammen diesen die Ein/Ausgabeumleitung in der Kommandozeile
  3583.         übergeben, und zwar in der Form "<Eingabedatei >Ausgabedatei".
  3584.         Vorher wird die Umleitung auf Gemdos-Basis rückgängig gemacht.
  3585.         Wenn das Flag nicht gesetzt ist, wird die Ein/Ausgabe aus-
  3586.         schließlich mit der Gemdos-Funktion Fforce umgeleitet, den
  3587.         Binärprogrammen wird also kein Dateiname übergeben. Dies ist
  3588.         die Normaleinstellung, die nur in extremen Sonderfällen ge-
  3589.         ändert werden sollte.
  3590.         Nach dem Start der Shell ist dieses Flag nicht gesetzt.
  3591.  
  3592.     a    Wenn dieses Flag gesetzt ist, werden jedem von der Shell ge-
  3593.         starteten Programm die übergebenen Parameter und der Programm-
  3594.         name nach dem xArg-Protokoll übergeben.
  3595.         Nach dem Start der Shell ist dieses Flag nicht gesetzt.
  3596.  
  3597.     f    Wenn dieses Flag gesetzt ist, wird, wenn in der Tastaturein-
  3598.         gabe Dateinamen-Vervollständigung mit Pfeil links oder ESC
  3599.         ausgeführt wird, an den eingegebenen Dateinamen ein `*' an-
  3600.         gehängt, wodurch dieser als Präfix für die auszuwählenden
  3601.         Dateien wirkt.
  3602.         Nach dem Start der Shell ist dieses Flag gesetzt.
  3603.  
  3604.     e    Wenn dieses Flag gesetzt ist, werden alle geänderten oder neu
  3605.         angelegten Shellvariablen automatisch ins Environment ex-
  3606.         portiert (siehe `export').
  3607.         Nach dem Start der Shell ist dieses Flag nicht gesetzt.
  3608.  
  3609.     r    Wenn dieses Flag gesetzt ist, führt die Shell alle Shell-
  3610.         scripts (außer wenn diese mit dem Kommando "." gestartet
  3611.         werden) in einer Subshell aus, d.h. der Shellprozeß er-
  3612.         zeugt mit fork eine Kopie seiner selbst, die das Shell-
  3613.         script ausführt.
  3614.         Dieses Flag ist ohne Wirkung, wenn Mint nicht installiert
  3615.         ist.
  3616.         Nach dem Start der Shell ist dieses Flag gesetzt.
  3617.  
  3618.     L    Wenn dieses Flag gesetzt ist, werden Kommandos mit dem
  3619.         Zeileneditor der Shell eingelesen. Wenn dieses Flag gelöscht
  3620.         ist, werden Kommandos von der Standardeingabe gelesen und
  3621.         können somit aus einer Datei, Pipe oder Schnittstelle kommen,
  3622.         womit der Zeileneditor nicht fertigwird.
  3623.         Daher muß, wenn die Shell zwar von der Standardeingabe lesen,
  3624.         aber nicht interaktiv sein soll (z.B. wenn sie Kommandos von
  3625.         einer Schnitttelle ausführen soll), beim Aufruf der Shell
  3626.         `-L' angegeben werden.
  3627.         Achtung: wenn L nicht gesetzt ist, kann die Shell nicht durch
  3628.         Druck auf Ctrl-D, sondern nur mit Ctrl-Z oder durch Eingabe
  3629.         von "exit" beendet werden.
  3630.         Nach dem Start der Shell ist dieses Flag gesetzt.
  3631.  
  3632.     S    Wenn dieses Flag gesetzt ist, benutzt die Shell eine Signal-
  3633.         verarbeitung, um Abstürze bei internen Kommandos u.ä. abzu-
  3634.         fangen. Eine Eingabe wie "memex 123" bringt, wenn S nicht
  3635.         gesetzt ist, die Shell (selbstverständlicherweise) zum
  3636.         Absturz. Wenn das S-Flag gesetzt ist, werden solche Fälle
  3637.         abgefangen, es erscheint dann "Killed", und es erscheint
  3638.         wieder das Shell-Prompt.
  3639.         Der Nachteil davon ist, daß die Signalverarbeitung u.U.
  3640.         mit anderen residenten Programmen, die Exceptions-Vektoren
  3641.         verbiegen, kollidieren kann.
  3642.         ACHTUNG: Dieses Flag darf nur beim Start der Shell über
  3643.         einen Übergabeparameter gesetzt werden und NICHT mit dem
  3644.         regulären set-Kommando, weder im Profile noch sonstwie.
  3645.         Die Ergebnisse sind sonst undefiniert (d.h. es ist nicht
  3646.         vorhersehbar, ob und wann die betreffenden Vektoren umge-
  3647.         bogen oder wiederhergestellt werden).
  3648.         Nach dem Start der Shell ist dieses Flag gesetzt.
  3649.  
  3650.     v    Wenn dieses Flag gesetzt ist, schreibt die Shell jede
  3651.         Eingabezeile nach StdOut, bevor diese ausgeführt wird.
  3652.         Das ist sinnvoll zum Debuggen von Shellscripts.
  3653.         Nach dem Start der Shell ist dieses Flag nicht gesetzt.
  3654.  
  3655. -----
  3656. shutdown - Abschalten oder Neubooten
  3657.  
  3658. Syntax: shutdown [-rRtfv]
  3659.  
  3660. Wenn eins der Flags -r und -R angegeben ist, wird nach einer Sicherheits-
  3661. abfrage ein Warmstart (bei -r) oder Kaltstart (bei -R) durchgeführt.
  3662.  
  3663. Wenn TCache >=5.2 installiert ist, werden alle Daten aus dem Schreibpuffer
  3664. auf die Platte geschrieben. (Siehe hierzu auch das Kommando `sync'.)
  3665.  
  3666. Wenn MiNT installiert ist, wird an alle Prozesse (bis auf mint, init und
  3667. die Shell selber) das Signal 15 (SIGTERM) geschickt, danach wird jeweils
  3668. eine Sekunde gewartet, damit der Prozeß Zeit hat, sich zu beenden. Danach
  3669. wird zwei Sekunden gewartet, und dann wird an alle noch lebenden Prozesse
  3670. (außer mint, init und der Shell selber) das Signal 9 (SIGKILL) geschickt,
  3671. um sicherzugehen, daß kein anderer Prozeß mehr läuft.
  3672.  
  3673. Wenn keins der Flags -r und -R angegeben ist, wird der Rechner bereit zum
  3674. Abschalten gemacht. Nach einer Sicherheitsabfrage werden alle Streams ge-
  3675. schlossen sowie Maus und Cursor abgeschaltet.
  3676. Wenn die Datei $HOME\bin\ship.exe vorhanden ist, wird sie geladen und
  3677. ausgeführt (als Binärprogramm). Wer eine Festplatte ohne Autopark-Funktion
  3678. hat, sollte dahin das SHIP.PRG der Harddisk-Utility-Diskette kopieren.
  3679. Damit wird auch die Festplatte zum Abschalten bereit gemacht.
  3680. Wenn weitere Aktionen beim Shutdown erwünscht sind, kann man ein Programm
  3681. schreiben, das diese Aktionen ausführt, und dieses nach $HOME\bin\ship.exe
  3682. kopieren. Dieses Programm kann das Harddisk-Ship-Programm dann per Pexec
  3683. aufrufen.
  3684. Danach wird die Meldung "...shutdown completed..." ausgegeben, und das
  3685. System läuft in eine Endlosschleife, die nur durch einen Reset verlassen
  3686. werden kann.
  3687.  
  3688. Wenn beim Laden und Starten von ship.exe ein Fehler auftritt, wird shutdown
  3689. abgebrochen (außer wenn -f angegeben ist). Wenn ship.exe nicht gefunden wird,
  3690. erscheint eine Warnung, aber shutdown wird nicht abgebrochen.
  3691.  
  3692. Flags:
  3693.     -r    Warmstart. Die Festplatte wird nicht geparkt, das Programm
  3694.         $HOME\bin\ship.exe wird nicht ausgeführt.
  3695.     -R    Wie -r, aber Kaltstart.
  3696.     -t    Wenn dieses Flag angegeben ist, wird vor dem Shutdown bzw.
  3697.         Reset das mit trap definierte Kommando ausgeführt.    
  3698.     -f    Es erfolgt keine Sicherheitsabfrage. Wenn beim Laden und
  3699.         Starten von ship.exe ein Fehler auftritt, wird shutdown
  3700.         nicht abgebrochen.
  3701.     -v    Vor jeder Aktion wird eine entsprechende Meldung auf den
  3702.         Bildschirm geschrieben. Ist ohne Wirkung bei -r und -R,
  3703.         da es hier keine Aktionen gibt, zu denen sich irgendwelche
  3704.         Meldungen lohnen würden, außerdem hätte man nicht viel
  3705.         Zeit, die Meldungen zu lesen.
  3706.  
  3707. Siehe auch:    sync
  3708.         trap
  3709.  
  3710. -----
  3711. sleep - eine Weile warten
  3712.  
  3713. Syntax: sleep [-sm] n
  3714.  
  3715. Dieses Kommando legt eine Pause von n Sekunden ein.
  3716. Wenn gon aktiv ist, wird zum Warten die AES-Funktion evnt_timer aufgerufen,
  3717. wodurch in der Wartezeit die Multitasking-Accessories zum Zuge kommen. Der
  3718. Nachteil ist, daß hier die Wartezeit nicht allzu genau ist; bei aktivem
  3719. gon ergab "time sleep 1" Zeiten zwischen 0.2 und 1.1 Sekunden.
  3720. Wenn gon nicht aktiv ist, wird zum Warten eine Warteschleife benutzt, die
  3721. den 200-Hz-Systemtimer abfragt. Hierbei kommt "time sleep 1" konstant auf
  3722. 1.01 Sekunden.
  3723.  
  3724. Wenn MiNT installiert ist und keins der Flags -s und -m angegeben ist, wird
  3725. der Shell-Prozeß mit einem MiNT-Systemaufruf für die angegebene Anzahl
  3726. Sekunden schlafengelegt, verbraucht also keine Rechenzeit. Es wird also
  3727. keine Warteschleife ausgeführt.
  3728.  
  3729. Flag:    -s    Es wird n Timer-Zyklen zu je 1/200 Sekunden gewartet.
  3730.         "sleep 1" ist also äquivalent zu "sleep -s 200". Es wird
  3731.         in einer Warteschleife gewartet, auch wenn gon aktiv ist.
  3732.     -m    Es wird n Millisekunden gewartet. "sleep 1" ist also auch
  3733.         äquivalent zu "sleep -m 1000". Dieses Flag hat nur Sinn,
  3734.         wenn gon aktiv ist, ansonsten wird nicht n Millisekunden,
  3735.         sondern n/5 Timer-Zyklen zu je 1/200 Sekunden gewartet.
  3736.  
  3737. -----
  3738. sort - Sortieren
  3739.  
  3740. Syntax: sort [-lnrs]
  3741.  
  3742. Das sort-Kommando ist ein Filter, d.h. es liest seine Standard-Eingabe
  3743. (StdIn), macht etwas damit und schreibt das Ergebnis zur Standard-Aus-
  3744. gabe (StdOut).
  3745. sort liest Zeilen von StdIn und gibt sie in sortierter Reihenfolge wieder
  3746. aus. Die Maximalanzahl der Zeilen ist 500. (Wer mehr braucht, kann dafür
  3747. den Software-Support benutzen. Die tatsächliche Anzahl der Zeilen einer
  3748. Shellversion kann mit "ver -l" ermittelt werden.)
  3749.  
  3750. Flags:
  3751.     -l    Es wird nach der Länge der Zeilen sortiert, die kürzeste
  3752.         Zeile kommt zuerst.
  3753.     -n    Es wird numerisch sortiert. Die Eingabezeilen werden als
  3754.         Zahlenangaben betrachtet (die mit %, 0 und 0x beginnen
  3755.         dürfen, um binäre, oktale oder hexadezimale Zahlen zu
  3756.         kennzeichnen) und in aufsteigender Reihenfolge sortiert,
  3757.         d.h. die kleinste Zahl kommt zuerst.
  3758.     -r    Die Sortierreihenfolge wird umgekehrt.
  3759.     -s    Die Strings werden nicht verkürzt. Wenn dieses Flag nicht
  3760.         angegeben ist, werden führende und endende Leer- und
  3761.         Tabulatorzeichen entfernt. Dies ist notwendig, wenn z.B
  3762.         mit "ls | sort -l" eine Dateiliste nach der Länge der
  3763.         Dateinamen sortiert werden soll, da in der Ausgabe des
  3764.         ls-Kommandos alle Dateinamen mit Leerzeichen auf 14 Zeichen
  3765.         Länge gebracht werden. 
  3766.  
  3767. Wenn keins der Flags l und n angegeben ist, wird nach lexikographischer
  3768. Reihenfolge sortiert (mit der strcmp-Funktion, alle Kleinbuchstaben kommen
  3769. daher nach allen Großbuchstaben).
  3770. Zum Sortieren wird der Quicksort-Algorithmus benutzt.
  3771.  
  3772. -----
  3773. split - eine Datei ein kleine Stücke aufteilen
  3774.  
  3775. Syntax: split [-bvf] {[-Num] Datei}
  3776.  
  3777. Jede der angegebenen Dateien wird in Stücke von maximal Num Zeilen (mit je
  3778. max. 80 Zeichen) aufgeteilt. Der Defaultwert für n ist 80. Die erzeugten
  3779. Teildateien haben denselben Namen wie die Quelldatei, wobei Extender von
  3780. 000 bis maximal 999 erzeugt werden. Wenn mehr als 999 Teilstücke notwendig
  3781. werden, wird der Rest der Datei in die Datei mit dem Extender .999 ge-
  3782. schrieben.
  3783. Wenn die Teildateien bereits existieren, erfolgt eine Sicherheitsnachfrage.
  3784. Wird diese mit Nein beantwortet, nimmt split die nächste Datei usf., bis
  3785. eine Datei gefunden ist, die nicht existiert oder zu der der Anwender sein
  3786. Einverständnis zum Überschreiben gibt.
  3787.  
  3788. Flags:
  3789.     -b    Die Datei wird in Stücke zu je max. Num Bytes aufgeteilt.
  3790.         Diese Option ist notwendig, um Binärdateien zu zerteilen.
  3791.     -f    Es erfolgt keine Nachfrage bei schon existierenden Dateien,
  3792.         diese werden überschrieben.
  3793.     -v    Es wird der Name jeder erzeugten Datei auf dem Bildschirm
  3794.         ausgegeben.
  3795.  
  3796. Beispiel:
  3797.     split -100 commands.doc
  3798.         teilt die angegebene Datei in Stücke zu je 100 Zeilen auf.
  3799.         Die erzeugten Dateien haben die Namen commands.000,
  3800.         commands.001 usw.
  3801.     split -10 f1.txt -20 f2.txt -30 f3.txt
  3802.         teilt f1.txt in Teile zu 10, f2.txt in Teile zu 20 und
  3803.         f3.txt in Teile zu 30 Zeilen auf.
  3804.     split long.doc
  3805.         teilt long.doc in Teile zu 80 Zeilen auf.
  3806.     split -bv -700000 part_c.lzh
  3807.         Aufteilen einer langen Archivdatei in Stücke, die auf
  3808.         eine Diskette passen. Die Namen der erzeugten Dateien
  3809.         werden auf dem Bildschirm ausgegeben.
  3810.  
  3811. Achtung: dieses Kommando sollte nur dann auf Binärdateien angewandt werden,
  3812. wenn das Flag -b benutzt wird.
  3813.  
  3814. -----
  3815. sync - Daten im Schreibcache abspeichern
  3816.  
  3817. Syntax: sync
  3818.  
  3819. Dieses Kommando kann nur in Verbindung mit dem Cache-Programm TCache ab
  3820. Version 5.2 benutzt werden. Wenn dieses Programm nicht installiert ist,
  3821. erscheint eine Fehlermeldung.
  3822. sync schickt an TCache das Kommando, alle noch nicht abgespeicherten Daten
  3823. auf die Platte zu schreiben. sync wird von shutdown automatisch durchge-
  3824. führt, so daß es nicht notwendig ist, beim Abschalten des Systems mit
  3825. shutdown vorher ein sync durchzuführen.
  3826.  
  3827. -----
  3828. system - ein Kommando über _shell_p ausführen
  3829.  
  3830. Syntax:    system Cmd {Para}
  3831.  
  3832. Die in _shell_p installierte Shell wird aufgerufen, um das Kommando
  3833. Cmd mit den angegebenen Parametern auszuführen.
  3834. Die Okami-Shell installiert normalerweise sich selber in _shell_p,
  3835. so daß system nicht benötigt wird. Bei einer Multitasking-Umgebung,
  3836. in der mehrere Shells gleichzeitig laufen, bedeutet es jedoch einen
  3837. großen Bedarf an Speicherplatz, mehrere Shells gleichzeitig im Speicher
  3838. zu haben, so daß die Möglichkeit besteht, nur (beim Systemstart) eine
  3839. volle Shell zu installieren und von da an (als weitere Login-Shells,
  3840. wenn Terminals benutzt werden) eingeschränkte ("CLI-Only-") Versionen
  3841. der Shell zu benutzen (sind über den Software-Support erhältlich).
  3842. Die CLI-Only-Versionen enthalten keine Kommandos wie cp, ls oder rm,
  3843. können diese Kommandos aber über die in _shell_p installierte
  3844. Hauptshell ausführen. Dazu kann man im Profile der Sub-Shells eintragen:
  3845.  
  3846.     alias cp system cp
  3847.     alias ls system ls
  3848.     alias rm system rm
  3849.  
  3850. usw.
  3851. Sollte es dabei zu Reentranzproblemen kommen, bitte melden.
  3852.  
  3853. -----
  3854. te - Terminal-Emulator
  3855.  
  3856. Syntax: te [-dk] [Dev {file | :string}]
  3857.  
  3858. Dies ist ein sehr einfacher und primitiver Terminal-Emulator. Er kann Daten
  3859. an eine beliebige Schnittstelle (RS232, Drucker, Midi) schicken und von dort
  3860. einlesen sowie Dateien über die Schnittstelle ausgeben. Seine Fähigkeiten
  3861. reichen allerdings aus zur Kommunikation mit einem Modem oder zum Ein-
  3862. loggen in eine Mailbox. Durch die Möglichkeit, während einer Mailbox-
  3863. sitzung te zu verlassen und andere Shell-Kommandos einzugeben, lassen
  3864. sich Up- und Downloads realisieren.
  3865. Mit Dev wird die zu benutzende Schnittstelle angegeben. Mögliche Werte sind:
  3866.  
  3867.     0    paralelle Schnittstelle (Drucker)
  3868.     1    serielle Schnittstelle (Modem) (default)
  3869.     2    Konsole (keine gute Idee)
  3870.     3    Midi-Schnittstelle
  3871.     4    Tastatur (eine sehr schlechte Idee)
  3872.  
  3873. Die Voreinstellung ist 1 (serielle Schnittstelle).
  3874. Wenn keine Dateien angegeben sind, arbeitet te im Dialogmodus, d.h. es werden
  3875. Daten von der Tastatur eingelesen und über die Schnittstelle geschickt sowie
  3876. Daten von der Schnittstelle eingelesen und auf StdOut ausgegeben. Beendet wird
  3877. te durch einen Druck auf UNDO.
  3878. Wenn Dateinamen angegeben sind, werden alle diese Dateien über die Schnitt-
  3879. stelle geschickt. Eingaben von der Schnittstelle werden ignoriert. Achtung:
  3880. in diesem Fall muß als erstes die Schnittstellennummer (Dev) angegeben sein.
  3881. Anstelle von Dateinamen können auch Strings angegeben werden, die direkt auf
  3882. die Schnittstelle geschickt werden. Diese Strings müssen mit einem Doppel-
  3883. punkt (:) eingeleitet werden. Der Doppelpunkt selber wird nicht mitgeschickt.
  3884. Achtung: te fügt am Ende des Strings kein Newline-Zeichen ein!
  3885. Wenn der String Leerzeichen enthält, muß er in Anführungszeichen gesetzt
  3886. werden.
  3887.  
  3888. Flag:    -d    Wenn dieses Flag angegeben ist, werden alle im Dialogmodus
  3889.         von der Schnittstelle eingelesenen Zeichen wieder an selbige
  3890.         zurückgeschickt. Das ist nützlich zum Testen von Schnitt-
  3891.         stellenverbindungen.
  3892.     -k    Wenn dieses Flag angegeben ist, werden im Dialogmodus alle
  3893.         Tastatureingaben auf dem Bildschirm ausgegeben. Das ist
  3894.         nur dann notwendig, wenn das an der Schnittstelle ange-
  3895.         schlossene Gerät das nicht selber macht.
  3896.  
  3897. Beispiele:
  3898.     te
  3899.         arbeitet im Dialogmodus.
  3900.  
  3901.     te 3
  3902.         ebenso, aber über die Midi-Schnittstelle.
  3903.  
  3904.     te 1 file.txt xyz.abc
  3905.         schickt die Dateien file.txt und xyz.abc an die serielle
  3906.         Schnittstelle.
  3907.  
  3908.     te >aux.in
  3909.         empfängt Daten von der seriellen Schnittstelle und schreibt
  3910.         diese in die datei aux.in, solange bis die UNDO-Taste gedrückt
  3911.         wird.
  3912.  
  3913.     te 1 :"ATD1234^n"
  3914.         schickt eine Steuersequenz zum automatischen Wählen der
  3915.         Telefonnummer an das an der seriellen Schnittstelle ange-
  3916.         schlossene Modem.
  3917.  
  3918. Siehe auch:    dial
  3919.         ts
  3920.  
  3921. -----
  3922. tee - T-Kreuzung der Eingabe
  3923.  
  3924. Syntax: tee File
  3925.  
  3926. StdIn wird nach StdOut und nach File kopiert.
  3927.  
  3928. -----
  3929. test - logische Ausdrücke auswerten
  3930.  
  3931. Syntax: test Ausdruck
  3932. oder    [ Ausdruck ]
  3933.  
  3934. Das test-Kommando wird normalerweise in Verbindung mit if oder while benutzt.
  3935. Der Rückgabewert ist 1, wenn der Ausdruck wahr ist, und 0 sonst. test erzeugt
  3936. keine Ausgabe.
  3937. Der Ausdruck kann eins der folgenden Formate haben:
  3938.  
  3939.         Dateioperationen:
  3940. -f file     Wahr, wenn file existiert.
  3941. -x file     Wahr, wenn file ausführbar ist.
  3942. -d file     Wahr, wenn file ein Directory ist.
  3943. -g file     Wahr, wenn file ein GEM-Programm ist ($GEXT).
  3944. file1 -yt file2    Wahr, wenn file1 jünger als file2 ist.
  3945. file1 -ot file2    Wahr, wenn file1 älter als file2 ist.
  3946.         Variablenoperationen:
  3947. +v var        Wahr, wenn var der Name einer gesetzten Shellvariablen ist.
  3948. -v var        Wahr, wenn es keine Shellvariable namens var gibt.
  3949.         Stringoperationen:
  3950. a = b        Wahr, wenn die Strings a und b gleich sind.
  3951. a != b        Wahr, wenn die Strings a und b ungleich sind.
  3952. a == b        Wahr, wenn der String a auf das Wildcard-Muster b paßt.
  3953. a -t b        Wahr, wenn das Kommando a auf eine der Typen b ausgeführt
  3954.         werden kann. Mögliche Typen sind:
  3955.             f    Shellfunktion
  3956.             i    internes Kommando
  3957.             s    Shellscript
  3958.             b    Binärprogramm
  3959.             n    Kommando nicht gefunden
  3960.         Es können beliebig viele dieser Typen angegeben werden.
  3961.  
  3962.         Die folgenden numerischen Operationen vergleichen zwei
  3963.         Zahlen x und y:
  3964. x -eq y     x =  y
  3965. x -ne y     x != y
  3966. x -lt y     x <  y
  3967. x -gt y     x >  y
  3968. x -le y     x <= y
  3969. x -ge y     x >= y
  3970.  
  3971. Achtung: bei -v und +v muß der Name einer Variablen angegeben werden und
  3972. nicht der Inhalt, also z.B. "test +v TERM" und nicht "test +v $TERM".
  3973.  
  3974. Beispiele: siehe if.
  3975.  
  3976. -----
  3977. then - SIEHE if
  3978.  
  3979. -----
  3980. time - Stoppuhr für Programme
  3981.  
  3982. Syntax: time Kommando {Parameter}
  3983.  
  3984. Führt das Kommando mit den angegebenen Parametern aus und schreibt die
  3985. Laufzeit in Minuten, Sekunden und 1/100 Sekunden auf den Bildschirm.
  3986. Das Ermitteln der Zeit geschieht mittels des 200 Hz-Systemtimers.
  3987.  
  3988. Wenn MiNT aktiv ist, werden drei Zeiten ausgegeben: die Zeit, die
  3989. der programmeigene Code ausgeführt wurde (User), die Zeit, die vom
  3990. Systemkern ausgeführt wurde (System), sowie die gesamte Laufzeit
  3991. (ermittelt mit dem 200 Hz-Systemtimer). User- und Systemzeit sind
  3992. nur dann zuverlässig, wenn es sich um ein internes Kommando handelt.
  3993.  
  3994. -----
  3995. touch - Dateien erneuern oder anlegen
  3996.  
  3997. Syntax: touch File {File}
  3998.  
  3999. Wenn File bereits existiert, werden Datei-Datum und -Zeit auf die aktuelle
  4000. Systemzeit gesetzt. Wenn File noch nicht existiert, wird eine Datei mit
  4001. dem Namen File angelegt.
  4002.  
  4003. Rückgabewert:
  4004.     -1    Aufruffehler
  4005.     1    Die Datei ist erzeugt worden.
  4006.     0    Das Dateidatum einer existierenden Datei wurde geändert.
  4007. Hierbei bezieht sich der Wert auf die letzte behandelte Datei.
  4008.  
  4009. -----
  4010. tr - Filter
  4011.  
  4012. Syntax: tr Filter
  4013.  
  4014. Filtert StdIn nach StdOut, abhaengig von den Angaben in Filter.
  4015. Jede Zeile in der Datei Filter (bis auf Leerzeilen oder Zeilen, die mit
  4016. # (Doppelkreuz) anfangen), bestimmt ein Zeichen. Die Zeilen haben den
  4017. Aufbau
  4018.  
  4019. s d
  4020.  
  4021. wobei s und d in dezimaler, hexadezimaler, oktaler oder Ascii-Schreibweise
  4022. angegebene Werte zwischen 0 und 255 sind.
  4023. Bsp: um in StdIn jedes A (grosses A) in B (grosses B) zu filtern, kann
  4024. z.B. eine der folgenden Zeilen in Filter stehen:
  4025.  
  4026.     !A  !B            (Character-Schreibweise)
  4027.     65  !B            (dezimale Schreibweise)
  4028.     0x41 !B         (hexadezimale Schreibweise)
  4029.     0101 !B         (oktale Schreibweise)
  4030.  
  4031. Auch B kann in jedem der Fälle in jeder der vier Schreibweisen
  4032. angegeben werden.
  4033.  
  4034. Beispiel:
  4035.     tr tab.tr <datei.txt >prt:
  4036. filtert die Datei datei.txt mit der Filterdatei tab.tr. Das Ergebnis wird
  4037. zum paralellen Drucker (prt:) geschickt.
  4038.  
  4039. -----
  4040. trap - Definieren eines Kommandos zum Beenden der Shell
  4041.  
  4042. Syntax: trap [-|[+]Kommando {Parameter}]
  4043.  
  4044. Es wird ein Shell-Kommando definiert, das nach dem Beenden der Shell mit
  4045. exit oder Control-V aufgerufen wird. Das Trap-Kommando wird nur beim Beenden
  4046. der Shell selber ausgeführt, nicht beim Beenden eines Shell-Scripts mit exit
  4047. oder bei einem shutdown (außer bei shutdown -t).
  4048. Beim Aufruf ohne Parameter wird das aktuelle Trap-Kommando ausgegeben.
  4049. Beim Aufruf mit einem Minuszeichen wird das Trap-Kommando gelöscht.
  4050. Beim Aufruf mit einem anderen Parameter als einem Minuszeichen wird dieser
  4051. Parameter als Trap-Kommando gespeichert. Wenn der Parameter mit einem Plus-
  4052. zeichen beginnt, wird das Pluszeichen entfernt und der Rest an das bisherige
  4053. Trap-Kommando angehängt.
  4054.  
  4055. Beispiele:
  4056.     trap echo hallo
  4057.             definiert "echo hallo" als das Kommando, das nach
  4058.             einem exit ausgeführt werden soll.
  4059.     trap
  4060.             gibt das zuvor definierte Kommando aus.
  4061.     trap -
  4062.             löscht die Einstellung.
  4063.     trap cls ^; echo Byebye
  4064.             löscht beim Ende der Shell den Bildschirm und
  4065.             schreibt "Byebye". Nach Eingabe von trap ohne
  4066.             Parameter erscheint von da an "cls ; echo Byebye".
  4067.     trap cls ; echo Byebye
  4068.             löscht beim Ende der Shell nur den Bildschirm,
  4069.             "Byebye" wird sofort geschrieben.
  4070.     trap `trap` ^; echo Byebye
  4071.             hängt das Kommando "echo Byebye" an den aktuellen
  4072.             trap-String an.
  4073.     trap +echo Byebye
  4074.             ebenso.
  4075.  
  4076. Eine sinnvolle Anwendung ist
  4077.     trap cursor -v
  4078. im Profile. Dadurch wird verhindert, daß nach dem Ende der Shell der
  4079. Cursor auf dem Desktop weiterhin sichtbar ist.
  4080.  
  4081. Es ist nicht notwendig, goff durch das trap-Kommando geben zu lassen,
  4082. da goff bei Ende der Shell automatisch ausgeführt wird.
  4083.  
  4084. Siehe auch:     exit
  4085.         history
  4086.         shutdown
  4087.         "Speichern und Restaurieren der Shell-Einstellungen"
  4088.                                 in tricks.doc
  4089.  
  4090. -----
  4091. true - Rückgabe von 1
  4092.  
  4093. Syntax: true
  4094.  
  4095. Dieses Kommando liefert immer eine 1 zurück. Es wird normalerweise mit dem
  4096. while-Kommando benutzt.
  4097.  
  4098. Beispiel: Programmieren einer Endlosschleife. Sie kann durch "break" im
  4099. Schleifenrumpf beendet werden.
  4100.  
  4101.         while true
  4102.         do
  4103.           ............. (irgendwelche Kommandos)
  4104.         done
  4105.  
  4106. Siehe auch: while
  4107.         if
  4108.         false
  4109.  
  4110. -----
  4111. ts - Terminal Server
  4112.  
  4113. Syntax: ts [-detrf] [-hHerald] [-lLogin] [-pPasswort] [-mAnzahl] [-bGerät]
  4114.  
  4115. Dieses Kommando verwandelt die Okami-Shell in einen Terminal-Server, der
  4116. Kommandos von einer beliebigen Schnittstelle annimmt und ausführt. Man kann
  4117. den ST also über eine Modem- oder Kabelverbindung von einem anderen Rechner
  4118. aus fernsteuern.
  4119. Die Ein/Ausgabe läuft unter das mit -b angegebene Bios-Gerät. Folgende
  4120. Angaben sind möglich:
  4121.  
  4122.     0    paralelle Schnittstelle (Drucker)
  4123.     1    serielle Schnittstelle (Modem) (default)
  4124.     2    Konsole (keine gute Idee)
  4125.     3    Midi-Schnittstelle
  4126.     4    Tastatur (eine sehr schlechte Idee)
  4127.  
  4128. Wenn ein Herald (Einschaltmeldung) angegeben ist, wird dieser zuerst über die
  4129. Schnittstelle geschickt. Danach kann der Benutzer am anderen Ende der Leitung
  4130. sich über Login und Passwort, falls angegeben, autentisieren. Die Shell
  4131. fragt über die Schnittstelle "login:" bzw. "Password:", das Kommando wird
  4132. nur fortgesetzt, wenn der Benutzer die in der Kommandozeile nach -l bzw. -p
  4133. angegebenen Strings eingibt.
  4134. (Login und Passwort sind also zwei äquivalente Kennworte. ts verwaltet nicht
  4135. wie Unix verschiedene Benutzer-Logins, die jeweils ein eigenes Passwort haben.)
  4136.  
  4137. Die nach -m angegebene Anzahl legt fest, wie oft ein fehlerhaftes Login oder
  4138. Passwort eingegeben werden darf. Wenn diese Zahl kleiner als 0 ist, darf man
  4139. beliebig viele falsche Logins bzw. Passworte eingeben (dies ist die Default-
  4140. Einstellung).
  4141. Wenn der Benutzer an der Schnittstelle als Login "exit" eingibt, wird ts
  4142. beendet.
  4143. ts liest von der angegebenen Schnittstelle Kommandos und führt diese aus, so-
  4144. lange bis auf der Tastatur des ST eine Taste gedrückt oder von der Schnitt-
  4145. stelle das Kommando "exit" eingegeben wird. FÜhrende und endende Leerzeichen
  4146. der Schnittstellen-Eingaben werden ignoriert. Die Ausgabe der eingelesenen
  4147. Kommandos wird wieder über die Schnittstelle übertragen, wenn nicht das Flag
  4148. -r angegeben ist. Alle eingelesenen Kommandos und deren Ausgaben werden auf
  4149. dem Bildschirm des ST protokolliert, wenn nicht das Flag -e angegeben ist.
  4150. Alle Eingaben des Terminals können mit Backspace bzw. Ctrl-H korrigiert wer-
  4151. den.
  4152.  
  4153. Achtung: interaktive Kommandos, die Tastatureingaben benötigen, wie rm -i oder
  4154. pg, können auf diese Weise nicht benutzt werden, da diese nur die Tastatur
  4155. des ST abfragen!
  4156.  
  4157. Flags:    -d    Der Server arbeitet nicht voll-duplex. Wenn dieses Flag nicht
  4158.         angegeben ist, werden alle empfangenen Zeichen wieder zurück
  4159.         über die Schnittstelle geschickt. Wenn -d angegeben ist, ge-
  4160.         schieht das nicht, das angeschlossene Terminal muß die Zeichen
  4161.         also selber ausgeben.
  4162.     -e    Die empfangenen Kommandos und deren Ausgaben erscheinen nicht
  4163.         auf dem Bildschirm.
  4164.     -t    Die empfangenen Kommandos werden nicht ausgeführt.
  4165.     -r    Die Ausgabe der empfangenen Kommandos wird nicht auf die
  4166.         Schnittstelle umgeleitet.
  4167.     -f    Vor jedem Login wird der Schnittstellenpuffer gelöscht.
  4168.     -h    Angabe der Einschaltmeldung, die vor jedem Login über die
  4169.         Schnittstelle geschickt wird.
  4170.     -l    Angabe eines optionalen Login-Kennwortes.
  4171.     -p    Angabe eines optionalen Passwortes.
  4172.     -m    Maximalanzahl der falschen Logins/Kennworte.
  4173.     -b    Angabe der zu benutzenden Schnittstelle (Bios-Gerätenummer).
  4174.  
  4175. Beispiel:
  4176. Eingabe auf dem ST:    ts -lroot -patari -h"Okami Shell^015^n"
  4177. Auf dem (an der seriellen Schnittstelle) angeschlossenen Terminal:
  4178.  
  4179.     Ausgabe            Eingabe
  4180.  
  4181.     Okami Shell
  4182.     login:            root
  4183.     password:        atari
  4184.      $            ......... (irgendein Shell-Kommando)
  4185.     (Ausgabe desselben)    exit
  4186.     Okami Shell
  4187.     login:            exit 
  4188.  
  4189. Durch die Eingabe von "exit" als Login wird ts beendet.
  4190.  
  4191. Siehe auch:    te
  4192.  
  4193. -----
  4194. tty - ermittelt den Namen des Terminals
  4195.  
  4196. Syntax: tty
  4197.  
  4198. tty ermittelt den Namen des Kontrollterminals des Shell-Prozesses als Datei
  4199. in u:/dev oder u:/pipe und schreibt ihn nach StdOut. Shellscripts können auf
  4200. diese Weise feststellen, ob ihnen die Konsole zur Verfügung steht.
  4201. Wenn MiNT nicht installiert ist oder wenn ein Fehler auftritt, wird "console"
  4202. ausgegeben.
  4203.  
  4204. Beispiel:
  4205.     if [ `tty` == *console* ]
  4206.     then
  4207.       gon
  4208.       alert 0 1 "Hier ist die Konsole" "Ok"
  4209.     else
  4210.       echo Dies ist ein Terminal oder Pseudoterminal
  4211.     fi
  4212.  
  4213. -----
  4214. type - Aufrufpfad von Kommandos ermitteln
  4215.  
  4216. Syntax: type [-fs] Kommando {Kommando}
  4217.  
  4218. Es wird ausgegeben, unter welchem Pfad die Shell das Programm zu dem
  4219. angegebenen Kommando aufrufen würde. Wenn es sich um ein internes
  4220. Kommando handelt, erscheint die Meldung "... is a shell builtin".
  4221. Wenn es sich um eine Shellfunktion handelt, erscheint die Meldung
  4222. "... is a function", außerdem wird die Definition der Funktion ausgegeben
  4223. (falls das Flag -f nicht angegeben ist).
  4224.  
  4225. Benutzt werden die Shellvariablen $PATH für die Pfade, auf denen das
  4226. Kommando gesucht wird, sowie $XEXT und $SEXT für die zu untersuchenden
  4227. Dateinamen-Extender. Wenn ein Kommando in der Hash-Tabelle enthalten ist,
  4228. wird die dort gespeicherte Pfad ausgegeben, ohne daß auf der Platte gesucht
  4229. wird. Es erscheint dann die Ausgabe "... is hashed".
  4230.  
  4231. Beispiel: Es sei d:\shell\bin\test.prg eine Programmdatei. $PATH enthalte
  4232. den Pfad d:\shell\bin, $XEXT enthalte den Extender .prg (z.B.:
  4233.     PATH=.,..,d:\shell,d:\shell\bin
  4234.     XEXT=.prg,.tos,.ttp
  4235. Dann wird bei der Eingabe von "type test" der vollständige Pfadname
  4236. der Datei test.prg ausgegeben. Wenn das aktuelle Directory d:\shell\bin
  4237. ist, erzeugt "type test" die Ausgabe "test is .\test.prg".
  4238.  
  4239. Flag:    -f    Wenn dieses Flag angegeben ist, wird bei einer Shell-
  4240.         funktion nur die Zeile "... is a function" ausgegeben
  4241.         und nicht die vollständige Definition der Funktion.
  4242.     -s    Es wird nur der vollständige Name der angegebenen Kommandos
  4243.         ausgegeben, also nicht "... is a shell builtin" etc. Bei
  4244.         internen Kommandos und Shellfunktionen ist das der Name,
  4245.         bei externen Kommandos der Aufrufpfad.
  4246.  
  4247. Siehe auch:    hash
  4248.         den Abschnitt über externe Kommandos
  4249.  
  4250. -----
  4251. unalias - SIEHE unset
  4252.  
  4253. -----
  4254. unset, unalias - Shellfunktionen und -variablen löschen
  4255.  
  4256. Syntax: unset|unalias Name {Name}
  4257.  
  4258. Alle angegebenen Shellfunktionen und -variablen werden gelöscht. Vorsicht:
  4259. wenn es zu einem der angegebenen Namen sowohl eine Funktion als auch eine
  4260. Variable gibt, werden beide gelöscht. Daher empfiehlt es sich, sich an die
  4261. Konvention zu halten, Variablennamen in Großbuchstaben und Funktionsnamen
  4262. in Kleinbuchstaben zu benutzen.
  4263. Dieses Kommando kann auch unter dem Namen unalias angesprochen werden, um das
  4264. Ausführen von Shellscripts zu ermöglichen, die für C-Shell-orientierte Shells
  4265. geschrieben wurden.
  4266.  
  4267. Siehe auch:    alias
  4268.  
  4269. -----
  4270. upn , rpn - UPN-Rechner incl. Einheitenumrechner
  4271.  
  4272. Syntax: upn|rpn [%Fmt] UPN-Ausdruck
  4273.  
  4274. Mit diesem Kommando können beliebige mathematische Ausdrücke berechnet wer-
  4275. den. Die Ausdrücke werden in der umgekehrten polnischen Notation (UPN) an-
  4276. gegeben, weil (1) ich ein Fan von HP-Rechnern bin und (2) weil ein Auswerter
  4277. für UPN-Ausdrücke einfacher zu programmieren ist. Wer eher auf die englische
  4278. Schreibweise steht, kann dieses Kommando auch unter dem Namen "rpn" aufrufen.
  4279.  
  4280. Ein UPN-Ausdruck ist eine Folge von durch Leerzeichen (:= Space, Tab...)
  4281. getrennten Zahlen oder Operationen.
  4282. Eine Zahl hat das Format
  4283.     [-][Vorkommastellen][.Nachkommastellen][E Exponent]
  4284. Jede Zahl, die in einem UPN-Ausdruck steht, wird auf einen internen Stack
  4285. geschoben. Dieser Stack faßt bis zu 32 Zahlen. (Wer mehr braucht, kann den
  4286. Software-Support benutzen, um eine erweiterte Version der Shell zu bekommen.
  4287. Die tatsächliche Größe des Stacks kann mit "ver -l" ermittelt werden.)
  4288. Außerdem gelten die Symbole "pi" und "e" als Zahlen und schieben die Kreis-
  4289. zahl Pi bzw. die Eulersche Zahl e auf den Stack.
  4290. Als Operation gilt alles, was keine Zahl ist. Die Operationen nehmen 0,
  4291. 1 oder 2 Zahlen vom Stack, machen etwas damit und legen das Ergebnis auf
  4292. den Stack zurück.
  4293. Nachdem der ganze UPN-Ausdruck auf diese Weise ausgewertet wurde, wird das
  4294. oberste Stack-Element auf StdOut ausgegeben. Das dabei verwendete Format
  4295. kann angegeben werden; gemeint ist das Format für die printf-Funktion.
  4296. Das Format kann das Ergebnis als long- oder double-Zahl ausgeben, das Resul-
  4297. tat bei Verwendung eines anderen Formats (z.B. %s) ist undefiniert. Näheres
  4298. siehe ein beliebiges C-Handbuch.
  4299. Zusätzlich zum Stack gibt es einen Speicher, der bis zu 10 Werte faßt, die
  4300. beliebig geschrieben und gelesen werden.
  4301.  
  4302. Achtung:
  4303. (1) Es darf nur die Formatangabe gemacht werden, keinen weiteren Text ange-
  4304. ben (z.B. "upn '%Das Ergebnis ist %d' 2 2 +" ist falsch - benutze statt-
  4305. dessen "echo Das Ergebis ist `upn %ld 2 2 +`")
  4306. (2) Bei Integerformaten muß das long-Format angegeben werden, also nicht
  4307. "upn %d ...", sondern "upn %ld ...." (analog für %x).
  4308.  
  4309. Stack und Speicher sind global und behalten ihren Inhalt über mehrere Auf-
  4310. rufe des upn-Kommandos hinweg. Man kann also z.B. mit "upn 123" eine Zahl
  4311. auf den Stack legen, dann weitere Kommandos ausführen und die Zahl dann
  4312. erst mit einem erneuten upn-Aufruf verarbeiten.
  4313.  
  4314. Eine Liste aller verfügbaren UPN-Funktionen findet sich in dieser Datei
  4315. zu dem Stichwort "upnfkt".
  4316.  
  4317. Eine komfortable Schnittstelle zum upn-Kommando ist das externe Kommando
  4318. calc (siehe dort).
  4319.  
  4320. Rückgabewert: Der ganzzahlige Anteil des obersten Stack-Elements (x).
  4321.  
  4322.  
  4323. Siehe auch:    upnfkt
  4324.         calc (externes Kommando)
  4325.  
  4326. -----
  4327. upnfkt - Funktionen des UPN-Rechners
  4328.  
  4329. Zur Bedienung des UPN-Rechners siehe das Stichwort upn. Dieser Abschnitt
  4330. erklärt alle Operationen, die im UPN-Rechner zur Verfügung stehen.
  4331.  
  4332. Im folgenden bedeutet x die oberste und y die zweitoberste Zahl auf dem
  4333. Stack. "x := x+y" bedeutet, daß zwei Zahlen vom Stack genommen und addiert
  4334. und daß das Ergebnis wieder auf den Stack gelegt wird.
  4335.  
  4336.  
  4337. Speicheroperationen:
  4338.  
  4339. sto        speichert y in Speicher x. Es wird nichts auf den Stack
  4340.         zurückgelegt.
  4341. rcl        liefert den Inhalt von Speicher x.
  4342.  
  4343. In beiden Fällen wird, wenn x größer als 9 ist, (x mod 10) benutzt.
  4344. Zu Beginn werden alle Speicherplätze zu 0 initialisiert.
  4345.  
  4346.  
  4347. Mathematische Operationen:
  4348.  
  4349. +,-,*,/,\    x := y +-*/ x        (Grundrechenarten)    (*)
  4350. %        x := y % x        (Modulo)
  4351. **        x := y hoch x        (Potenzieren)
  4352. ++        x := x+1        (Inkrement)
  4353. --        x := x-1        (Dekrement)
  4354. chs        x := -x         (Vorzeichenwechsel)
  4355. rcp        x := 1/x        (Reziprokwert)
  4356. log        x := log (y) x        (Log. zur Basis y)
  4357. ln        x := ln x        (Log. zur Basis e)
  4358. lg        x := lg x        (Log. zur Basis 10)
  4359. ld        x := ld x        (Log. zur Basis 2)
  4360. deg        x := x * (180/Pi)    (Umrechnung Rad.->Deg.) (**)
  4361. grad        x := x * (200/Pi)    (Umrechnung Rad.->Grad) (**)
  4362. sin        x := sin x        (Sinus)
  4363. sinh        x := sin hyp x        (Sinus Hyperbolicus)
  4364. asin        x := arc sin x        (Arcus-Sinus)
  4365. asinh        x := arc sin hyp x    (Arcus-Sinus Hyperbolicus)
  4366. cos        x := cos x        (Cosinus)
  4367. cosh        x := cos hyp x        (Cosinus Hyperbolicus)
  4368. acos        x := arc cos x        (Arcus-Cosinus)
  4369. acosh        x := arc cos hyp x    (Arcus-Cosinus Hyperbolicus)
  4370. tan        x := tan x        (Tangens)
  4371. tanh        x := tan hyp x        (Tangens Hyperbolicus)
  4372. atan        x := arc tan x        (Arcus-Tangens)
  4373. atanh        x := arc tan hyp x    (Arcus-Tangens Hyperbolicus)
  4374. sqrt        x := sqrt x        (Quadratwurzel)
  4375. sqr        x := x*x        (Quadrat, schneller als "x 2 **")
  4376. exp        x := e hoch x
  4377. exp2        x := 2 hoch x
  4378. exp10        x := 10 hoch x
  4379. abs        x := |x|        (Betrag)
  4380. sign        x := signum x        (Vorzeichen: -1, 0, 1)
  4381. min        x := min {x,y}        (Minimum)
  4382. max        x := max {x,y}        (Maximum)
  4383. fact        x := x!         (Fakultät)
  4384. int        x := int x        (Vorkommastellen)
  4385. frac        x := frac x        (Nachkommastellen)
  4386. rand        x aus (0,1)        (Zufallszahl)
  4387. rnd        x := x gerundet auf 1. Vorkommastelle
  4388.  
  4389. Außerdem gibt es die folgenden Einheiten-Umrechenfunktionen, die jeweils
  4390. x umrechnen:
  4391.  
  4392.     in2mm    mm2in        (inch <-> Millimeter)
  4393.     ft2m    m2ft        (Foot <-> Meter)
  4394.     mi2km    km2mi        (Meilen <-> Kilometer)
  4395.     m2yd    yd2m        (Meter <-> Yards)
  4396.     m2nmi    nmi2m        (Meter <-> nautische Meilen)
  4397.     m2rod    rod2m        (Meter <-> Rod, was immer das ist)
  4398.     m2pc    pc2m        (Meter <-> Parsec)
  4399.     gal2l    l2gal        (Gallonen <-> Liter)
  4400.     lb2kg    kg2lb        (engl. Pfund <-> Kilogramm)
  4401.     kg2oz    oz2kg        (Kilogramm <-> Unzen)
  4402.     kg2ozt    ozt2kg        (Kilogramm <-> Troy-Unzen)
  4403.     kg2u    u2kg        (Kilogramm <-> Units (atomare Masseeinheit))
  4404.     kg2slug    slug2kg        (Kilogramm <-> Slug)
  4405.     f2c    c2f        (Fahrenheit <-> Celsius)
  4406.     c2k    k2c        (Celsius <-> Kelvin)
  4407.     ms2mph    mph2ms        (Meter/Sekunde <-> Meilen pro Stunde)
  4408.  
  4409. Die folgenden Größenordnungsumrechenfunktionen rechnen x in die jeweilige
  4410. Größenordnung um. Um 2500 Gramm in Kilogramm umzurechnen, lautet der Aufruf
  4411. also "upn 2500 kilo".
  4412.  
  4413.     10 hoch i:    10 hoch -i:    i:
  4414.     exa        atto        18
  4415.     peta        femto        15
  4416.     tera        pico        12
  4417.     giga        nano        9
  4418.     mega        micro        6
  4419.     kilo        milli        3
  4420.     hecta        centi        2
  4421.     deca        deci        1
  4422.  
  4423. Die folgenden Größenordnungen arbeiten auf Basis 2, z.B. um Bytes in Kilo-
  4424. bytes umzurechnen.
  4425.  
  4426.     2 hoch i:    2 hoch -i:    i:
  4427.     bgiga        bnano        1000
  4428.     bmega        bmicro        100
  4429.     bkilo        bmilli        10
  4430.  
  4431. In den Umrechenfunktionen steht die 2 für das englische Wort "to",
  4432. das genauso ausgesprochen wird wie "two"; "in2mm" liest man also
  4433. "inch to millimeter".
  4434. Quellen für die Umrechnungsfaktoren: die Taschenrechner Hewlett-Packard 28C
  4435. und Commodore SR9190R.
  4436.  
  4437.  
  4438. Sonderfunktionen:
  4439.  
  4440. help    Es wird eine Liste aller verfügbarer Operationen ausgegeben. Hinter
  4441.     den Operationen erscheint in Klammern die Anzahl der Zahlen, die
  4442.     für die Operation vom Stack genommen werden.
  4443.  
  4444. list    Gibt den aktuellen Inhalt des Stacks auf dem Bildschirm aus.
  4445.  
  4446. look    Tut nichts. Dient dazu, das oberste Stackelement noch einmal aus-
  4447.     zugeben.
  4448.  
  4449. swap    Vertauscht die obersten beiden Stackelemente (x und y).
  4450.  
  4451. dup    dupliziert das oberste Stackelement.
  4452.  
  4453. pop    Löscht das oberste Element vom Stack.
  4454.  
  4455. clr    Löscht den gesamten Stack. Der Speicher ist davon nicht betroffen.
  4456.  
  4457.  
  4458. ANMERKUNGEN:
  4459.  
  4460. (*)     Zur Division kann sowohl der Slash (/) als auch der Backslash (\)
  4461. benutzt werden. Dadurch ist es möglich, den UPN-Rechner zu benutzen, auch
  4462. wenn das Shell-Flag -b gesetzt ist, das alle Slashes in der Eingabe in
  4463. Backslashes umformt.
  4464.  
  4465. (**)    Die trigonometrischen Funktionen wie sin, cos etc. arbeiten alle
  4466. im Gradmaß (Kreis = 2 Pi Grad). Mit den Operationen deg und grad können
  4467. Winkelangaben in Altgrad (Kreis = 360 Grad) und Neugrad (Kreis = 400 Grad)
  4468. umgerechnet werden.
  4469.  
  4470.  
  4471. Beispiele:
  4472. 1) Ausrechnen von 3+4:
  4473.     upn 3 4 +
  4474. 2) Berechnen der Oberfläche eines Kreises mit Radius 10:
  4475.     upn 10 sqr pi *
  4476. 3) Berechnen der Oberfläche eines Kreises mit Radius 123 mm in Zoll (inch):
  4477.     upn 123 sqr pi * mm2in
  4478. 4) Umrechnen von 36 Grad Celsius (Temperatur in Aachen am 12.8.1990) in
  4479.    Fahrenheit:
  4480.     upn 36 c2f
  4481. 5) Und die Temperatur in Aachen am 7.2.1991:
  4482.     upn 12.2 f2c
  4483. 6) Ab welcher Temperatur in Kelvin fängt Papier an zu brennen?
  4484.     upn 451 f2c c2k
  4485. 7) Wieviele Kilometer haben 25 nautische Meilen?
  4486.     upn 25 nmi2m kilo
  4487. 8) Wieviele Gramm hat eine Unze?
  4488.     upn 1 oz2kg milli
  4489. 9) Wieviele Bytes hat ein Kilobyte?
  4490.     upn 1 bkilo
  4491. 10) Und wieviele Bits hat ein Mega-ST 4?
  4492.     upn 4 bmega 8 *
  4493. 11) Benutzung des Formatstrings: Ausgabe der Fakultät von 12 in Hex:
  4494.     upn %lx 12 fact
  4495. 12) Shellvariablen können auch beutzt werden:
  4496.     echo Geben Sie zwei Zahlen ein:
  4497.     read x
  4498.     read y
  4499.     echo Die größere der Zahlen ist ^c
  4500.     upn %ld $x $y max
  4501. 13) Auflisten aller Operationen:
  4502.     upn help
  4503. 14) Zählen der Operationen des UPN-Rechners:
  4504.     upn %ld `upn help | wc -w` 2 /
  4505.    (zur Erklärung: "upn help" gibt für jede Operation zwei Worte aus, nämlich
  4506.    den Namen der Operation und die Anzahl der Parameter. "upn help | wc -w"
  4507.    zählt die Worte. Mit dem Ergebnis wird upn nochmals aufgerufen, um es durch
  4508.    2 zu teilen und damit die Anzahl der Operationen zu ermitteln.)
  4509. 15) Wieviel Speicherplatz in Kilobytes belegt eine Shell?
  4510.     upn %ld `mem` `sh mem` - bkilo
  4511. 16) Ausgabe des Ergebnisses der letzten Berechnung:
  4512.     upn look
  4513. 17) Benutzung des Speichers: Berechnen von sin 30, ablegen in Speicher 0,
  4514.     berechnen von cos 75, ablegen in Speicher 1, berechnen der Wurzel von
  4515.     3, ablegen in Speicher 2 und 3. Danach den Inhalt von Speicher 1 mit dem
  4516.     von Speicher 3 multiplizieren, davon den Logarithmus zur Basis Speicher 0
  4517.     berechnen und durch Speicher 2 teilen.
  4518.         upn 30 sin 0 sto 75 cos 1 sto 3 sqrt 2 sto 2 rcl 2 sto
  4519.     upn 0 rcl 1 rcl 3 rcl * log 2 rcl /
  4520.  
  4521. -----
  4522. vars - Shellvariablen auflisten
  4523.  
  4524. Syntax: vars [-aexs]
  4525.  
  4526. Gibt eine Liste der vom Anwender angelegten Shellvariablen nach StdOut.
  4527. Die Ausgabe besteht aus dem Variablennamen, dem aktuellen Wert und dem
  4528. Variablenstatus. Folgende Status-Angaben sind moeglich:
  4529.  
  4530. USR        Die Variable wurde vom Anwender oder von einem Shell-Script
  4531.         angelegt oder veraendert.
  4532. SYS        Die Variable wird vom System fuer das System angelegt.
  4533. R/O        Der Wert der Variablen kann nicht veraendert werden und
  4534.         die Variable kann nicht geloescht werden (siehe readonly).
  4535. EXP        Die Variable ist exportiert worden (siehe export).
  4536.  
  4537. Flags:    -a    Es werden alle Shellvariablen (auch die Systemvariablen)
  4538.         ausgegeben.
  4539.     -e    Es werden nur Variablen ausgegeben, die sich im Environment
  4540.         befinden (Status EXP).
  4541.     -x    Die Variablen werden im Deklarationsformat, als in der
  4542.         Form "NAME=WERT" ausgegeben. Der Variablenstatus wird
  4543.         nicht ausgegeben. Dieses Format kann in ein Shellscript
  4544.         übernommen werden.
  4545.     -s    Es wird eine Statistik ueber den freien und belegten Platz
  4546.         in der Variablentabelle ausgegeben.
  4547.  
  4548. Beispiele:
  4549.  
  4550. Anlegen einer Variablen:
  4551.     VAR=Hallo
  4552.  
  4553. "vars" erzeugt eine Ausgabe der Art:
  4554.  
  4555. VAR    =Hallo            USR
  4556.  
  4557. "vars -x" erzeugt eine Ausgabe der Art:
  4558.  
  4559. VAR=Hallo
  4560.  
  4561. Siehe auch:    env
  4562.         export
  4563.         readonly
  4564.  
  4565. -----
  4566. ver - Versionsnummern ausgeben
  4567.  
  4568. Syntax: ver [-oclgtvdpmMa]
  4569.  
  4570. Wenn kein Flag angegeben ist, wird -oc angenommen.
  4571.  
  4572. Die Flags haben folgende Bedeutung:
  4573.  
  4574.     -o  Ausgabe der Versionsnummer der Shell.
  4575.     -c  Ausgabe von Datum und Uhrzeit des Kompilierens der Shell. Damit
  4576.         lassen sich verschiedene Upgrades innerhalb einer Versionsnummer
  4577.         unterscheiden.
  4578.     -l  Es wird eine genauere Analyse der Möglichkeiten der vorliegenden
  4579.         Shell-Version ausgegeben, die Angaben über die Maximalanzahl der
  4580.         Funktionen und Variablen, die Größe des UPN-Stacks usw. enthält.
  4581.     -g  Ausgabe der Gemdos-Versionsnummer. Sie wird mit der Gemdos-Funktion
  4582.         Sversion festgestellt und im Format Hauptnummer.Unternummer ausge-
  4583.         geben.
  4584.     -v  Ausgabe der GDOS-Versionsnummer. Diese Nummer kann nur ermittelt
  4585.         werden, wenn gon aktiv ist.
  4586.     -t  Ausgabe der TOS-Version und Länderkennung. Stammt aus dem TOS-
  4587.         Systemheader.
  4588.     -p  Ausgabe der PAL-Bildfrequenz (50 oder 60 Hz), ebenfalls aus dem
  4589.         TOS-Systemheader.
  4590.     -d  Ausgabe des TOS-Datums. Stammt ebenfalls aus dem TOS-Systemheader
  4591.         und wird wie dort im Format Monat/Tag/Jahr ausgegeben.
  4592.     -m  Ausgabe der Versionsnummer des installierten MiNT. Wenn kein MiNT
  4593.         installiert ist, erscheint "none".
  4594.     -M  Wie -m, aber es wenn MiNT nicht installiert ist, wird keine Ausgabe
  4595.         erzeugt.
  4596.     -a  Es erfolgen alle diese Ausgaben (außer -M und -l).
  4597.  
  4598. Beispiel: "ver -a" ergibt auf einem 1040ST mit deutschem TOS 1.04 mit MiNT
  4599. und NVDI folgende Ausgabe:
  4600.  
  4601.     Okami Shell 1.5                 [-o]
  4602.     compiled Sep 19 1992 12:56:20            [-c]
  4603.     TOS Version 1.04 (FRG)                [-t]
  4604.     GEMDOS Version 0.21                [-g]
  4605.     GDOS Version: NVDI                [-v]
  4606.     MiNT Version 0.95                [-m]
  4607.     TOS Date 04/06/1989                [-d]
  4608.     PAL Mode 60 Hz                    [-p]
  4609.  
  4610. In eckigen Klammern jeweils das Flag, das die betreffende Zeile erzeugt (er-
  4611. scheint nicht in der Ausgabe).
  4612. Bei den Flags -o und -c erscheinen natürlich andere Werte, je nach der ver-
  4613. wendeten Version der Shell.
  4614.  
  4615. "ver -l" gibt bei der Standardversion folgende Ausgabe:
  4616.  
  4617.     Max. # of variables          200
  4618.     Max. # of functions          200
  4619.     Max. # of nested while's     16
  4620.     Max. # of lines for sort     500
  4621.     Max. filespec length         128
  4622.     Max. length of input line    400
  4623.     Length of history buffer     100
  4624.     Size of hash table           199
  4625.     Size of RPN stack            32
  4626.     Size of RPN store            10
  4627.     Version supports MiNT
  4628.     Version was compiled with Pure C
  4629.  
  4630. "Max. # of nested while's" ist die Maximalanzahl der while-Schleifen, die
  4631. ineinander geschachtelt werden können.
  4632. "Max. # of lines for sort" ist die Maximalanzahl der Zeilen, die mit dem
  4633. internen Kommando sort sortiert werden können.
  4634. "Max. filespec length" ist die maximale Länge eines Dateinamens incl. Pfad.
  4635. "Max. length of input line" ist die maximale Länge einer Eingabezeile nach
  4636. der Expansion von Variablen, Command Substitution usw.
  4637. "Length of history buffer" ist die Anzahl der Eingabezeilen, die in dem
  4638. Ringpuffer der Tastatur-History gespeichert werden können.
  4639. "Size of hash table" ist die Größe der internen Hash-Tabelle. Dies sollte
  4640. immer eine Primzahl sein.
  4641.  
  4642. -----
  4643. virus - Bootsektorviren aufspüren und entfernen
  4644.  
  4645. Syntax: virus [-xvsi] {drive}
  4646.  
  4647. Es wird der Bootsektor von jedem angegebenen Laufwerk eingelesen und auf
  4648. Ausführbarkeit getestet. Ein Bootsektor ist ausführbar, wenn seine Prüf-
  4649. summe 0x1234 beträgt; nur in diesem Fall kann ein Virus sich beim Booten
  4650. dieser Diskette oder Partition im Speicher einnisten. Auf Wunsch wird ein
  4651. ausführbarer Bootsektor nicht-ausführbar gemacht.
  4652. Wenn kein Laufwerk angegeben ist, wird nur Laufwerk A: untersucht.
  4653.  
  4654. Flags:
  4655.     -x    Ein ausführbarer Bootsektor wird nicht-ausführbar gemacht,
  4656.         indem das letzte Byte des Bootsektors inkrementiert wird.
  4657.     -v    Es erscheinen Meldungen über Prüfsumme und Ausführbarkeit
  4658.         zu jedem untersuchten Laufwerk. Wenn dieses Flag nicht an-
  4659.         gegeben ist, werden nur Meldungen über ausführbare Boot-
  4660.         sektoren ausgegeben.
  4661.     -s    Der Bootsektor wird nicht untersucht, sondern nach StdOut
  4662.         geschrieben.
  4663.     -i    Der Bootsektor wird nicht von dem angegebenen Laufwerk,
  4664.         sondern von StdIn eingelesen. Wenn der eingelesene Boot-
  4665.         sektor ausführbar ist und -x gesetzt ist, wird der Boot-
  4666.         sektor auf das angegebene Laufwerk geschrieben.
  4667.     -rambo    Erzeugt durch Erhöhen der Prozessortaktfrequenz in Ver-
  4668.         bindung mit dem Virus-Code ein Hyperfunksignal, das auf
  4669.         beliebige Entfernung den Programmierer des Virus erreicht
  4670.         und sein Gehirn mindestens 10E7 Lichtjahre weit weg
  4671.         teleportiert. (Noch nicht implementiert)
  4672.  
  4673. Beispiele:
  4674.     virus
  4675.         untersucht Laufwerk A: und gibt eine Warnung aus, wenn der
  4676.         Bootsektor ausführbar ist, ändert ihn aber nicht. Dieses
  4677.         Kommando kann in Shellscripts stehen, da es sich im
  4678.         Normalfall (Bootsektor ist nicht ausführbar) "unsichtbar"
  4679.         verhält.
  4680.     virus B: C:
  4681.         dasselbe für Laufwerk B: und Partition C:.
  4682.     virus bc
  4683.         genauso wie das vorige Beispiel.
  4684.     virus -s a: >boot.dat
  4685.         der Bootsektor von Laufwerk A: wird in die Datei boot.dat
  4686.         geschrieben.
  4687.     virus -i -x a: <boot.dat
  4688.         der zuvor gesicherte Bootsektor wird auf Ausführbarkeit 
  4689.         untersucht und ggfs. nicht-ausführbar gemacht.
  4690.     virus -s c: | hd
  4691.         es wird ein Hexdump des Bootsektors von Partition C: er-
  4692.         zeugt.
  4693.  
  4694. Rückgabewert:
  4695.     -1    Aufruffehler
  4696.     0    Der Bootsektor ist nicht ausführbar (gemacht worden).
  4697.     1    Der Bootsektor ist (immer noch!) ausführbar.
  4698. Hierbei bezieht sich dieser Wert auf das zuletzt untersuchte Laufwerk.
  4699.  
  4700. Die Idee zu diesem Kommando stammt aus dem Data-Becker-Buch "Atari ST intern
  4701. Band 2" von Martin Pauly, allerdings habe ich die Flags -s und -i hinzu-
  4702. gefügt und die Einleseroutinen geändert, damit auch Festplattenpartitionen
  4703. untersucht werden können.
  4704.  
  4705. -----
  4706. wc - Zeilen, Worte und Zeichen zählen
  4707.  
  4708. Syntax: wc [-lwcn] {File}
  4709.  
  4710. Es werden die Anzahl der Zeilen, Worte und Zeichen der angegebenen Datei
  4711. oder von StdIn ausgegeben. Ein Wort wird durch Leerzeichen, Tabs oder
  4712. Newline-Zeichen begrenzt.
  4713.  
  4714. Flags:    -l    Ausgabe der Anzahl der Zeilen
  4715.     -w    Ausgabe der Anzahl der Worte
  4716.     -c    Ausgabe der Anzahl der Zeichen
  4717.     -n    Ausgabe des jeweiligen Dateinamens
  4718. Wenn keine Flags angegeben sind, gelten alle Flags als aktiviert.
  4719.  
  4720. Beispiel:
  4721. 1) Ausgabe der Anzahlen der Zeilen und Zeichen aller C-Quell- und Header-
  4722.    dateien im aktuellen Directory:
  4723.     wc -lcn *.c *.h
  4724.         
  4725. 2) Ausgabe der Anzahl der internen Kommandos:
  4726.     cmds | wc -l
  4727.  
  4728. Rückgabewert:
  4729.     -1    Aufruffehler
  4730.     sonst    die Anzahl der gezählten Dateien.
  4731.  
  4732. -----
  4733. what - Dateien identifizieren
  4734.  
  4735. Syntax: what [-s] {Datei}
  4736.  
  4737. Dieses Kommando ist in der Unix-Welt sehr beliebt und gehört dort zu dem
  4738. Sourcecode-Control-System (SCCS). Der Sinn ist, eine jede Datei, egal ob
  4739. Ascii oder binär, anhand eines speziellen Codes identifizieren zu können.
  4740. Dieser Code steht irgendwo in der Datei, gefolgt von einer Zeichenkette, die
  4741. die Datei, den Autor und die Version kennzeichnet. Der Code ist @(#) (At
  4742. Klammer auf Doppelkreuz Klammer zu).
  4743. Das Kommando what sucht in jeder angegebenen Datei (oder in StdIn, wenn keine
  4744. Datei angegeben ist) nach der Zeichenkette @(#) und gibt alles aus, was
  4745. dahinter bis zum nächsten doppelten Anführungszeichen ("), Größerzeichen (>),
  4746. Zeilenende (\n) oder Nullbyte (\0) kommt.
  4747. Die übliche Art, diesen Identifikationsstring in einem Programm unterzubringen,
  4748. ist folgende Zeile kurz nach Dateibeginn:
  4749.  
  4750.     static char _M_ID_[]="@(#) Okami Shell 1.5 - cmds3.c";
  4751.  
  4752. Die Zeichenkette "@(#) Okami Shell 1.5 - cmds3.c" steht dann sowohl in der
  4753. C-Quelldatei als auch in dem O-File und dem ausführbaren Programm. Wenn alle
  4754. Module eines Programms auf diese Weise gekennzeichnet sind, kann man mit
  4755. what eine Liste aller Module, auch Librarymodule, bekommen, aus denen ein
  4756. Programm zusammengesetzt ist.
  4757. Wer die Quellen der Okami-Shell hat, kann mit what die Namen der in den einzel-
  4758. nen Modulen enthaltenen Funktionen ermitteln (z.B. "what cmds*.c").
  4759.  
  4760. Flag:    -s    Wenn dieses Flag angegeben ist, wird nur das erste @(#) in
  4761.         der Datei gesucht.
  4762.  
  4763. Beispiel:
  4764.     what *.sh    erzeugt eine Liste der Versionen aller Shellscripts
  4765.     what -s doc/*    eine Art Inhaltsverzeichnis der Anleitungsdateien
  4766.  
  4767. -----
  4768. while , do, continue, break, done - Schleifen
  4769.  
  4770. Syntax: while Kommando1
  4771.     do
  4772.     {Kommandos2|continue|break}
  4773.     done
  4774.  
  4775. Das while-Konstrukt darf nur in Shell-Scripts stehen. Die Ergebnisse bei
  4776. der Eingabe von der Tastatur oder einer Schnittstelle sind undefiniert
  4777. (was völlig natürlich ist).
  4778.  
  4779. Die Zeilen zwischen "do" und "done" werden ausgeführt, bis Kommando1
  4780. den Rückgabewert 0 liefert. In diesem Fall wird mit der Ausführung in der
  4781. "done" folgenden Zeile fortgefahren.
  4782. Das Kommando "break" beendet die while-Schleife augenblicklich. Es darf in
  4783. einem if-fi-Konstrukt stehen (was es normalerweise auch tut).
  4784. Das Kommando "continue" springt zurück zum zugehörigen "while"-Kommando.
  4785. Der aktuelle Schleifendurchlauf wird also beendet, und es beginnt ein
  4786. neuer Schleifendurchlauf. Ebenso wie "break" darf auch "continue" in einem
  4787. if-fi-Konstrukt stehen.
  4788. Die Wirkung von "break" und "continue" ist demnach identisch mit der von
  4789. "break" und "continue" in der Programmiersprache C.
  4790.  
  4791. Typische Kandidaten für "Kommando1" sind true, false und test (bzw. "[").
  4792.  
  4793. Beispiele:
  4794.  
  4795. 1) Wiederholen von Anweisungen:
  4796.  
  4797.     while [ $X != abc ]
  4798.     do
  4799.       echo Bitte abc eingeben.
  4800.       read X
  4801.     done
  4802.  
  4803.  
  4804. 2) Dateien mit der Fileselect-Box einlesen, bis der Anwender "Abbruch"
  4805.    anklickt:
  4806.  
  4807.     while true
  4808.     do
  4809.       fsel *.* . BUTTON
  4810.       if [ $BUTTON = 0 ]
  4811.       then
  4812.         break
  4813.       fi
  4814.     done
  4815.  
  4816.    "while true" ist also eine Endlosschleife, die nur durch break verlassen
  4817.    werden kann.
  4818.  
  4819.  
  4820. 3) Wie 2), aber es werden nur Dateien akzeptiert, die noch nicht existieren.
  4821.    Wenn eine bereits existierende Datei angewählt wurde (was mit [ -f $FILE ]
  4822.    herausgefunden wird), wird die while-Schleife mit "continue" von vorne
  4823.    begonnen.
  4824.  
  4825.     while true
  4826.     do
  4827.       # den Dateinamen in die Variable FILE einlesen
  4828.       FILE=`fsel *.* datei.txt BUTTON`
  4829.       if [ $BUTTON = 0 ]
  4830.       then
  4831.         break
  4832.       fi
  4833.       if [ -f $FILE ]
  4834.       then
  4835.         continue
  4836.       fi
  4837.       ...................... (mache was mit $FILE)
  4838.     done
  4839.  
  4840.  
  4841. 4) Eine Variable eingeben lassen, solange bis sie wirklich einen Wert
  4842.    enthält.
  4843.  
  4844.     while [ -v VARIABLE ]
  4845.     do
  4846.       echo Bitte geben Sie die Variable ein.
  4847.       read VARIABLE
  4848.     done
  4849.  
  4850.  
  4851. Siehe auch: test
  4852.         true
  4853.         false
  4854.         if
  4855.  
  4856. -----
  4857. xargs - Eingabe als Parameter für andere Kommandos
  4858.  
  4859. Syntax: xargs [Kommando {Parameter}]
  4860.  
  4861. Liest Zeilen von StdIn und führt das angegebene Kommando mit den angegebenen
  4862. Parametern und den eingelesenen Zeilen aus. Wenn kein Kommando angegeben
  4863. ist, wird als Default "echo" benutzt.
  4864. Wenn Kommando oder Parameter die Zeichenkette "{}" (öffnende und schließende
  4865. geschwungene Klammer) enthalten, wird die von StdIn eingelesene Zeile
  4866. anstelle dieser Zeichenkette eingesetzt. Ansonsten wird die eingelesene
  4867. Zeile nach einem Leerzeichen an den Parameterstring angehängt.
  4868.  
  4869. Beispiele:
  4870.     ls *.sh | xargs .
  4871.         führt alle Shellscripts im aktuellen Verzeichnis aus.
  4872.     ls *.c | xargs echo Die Datei {} ist da
  4873.         Erzeugt als Ausgabe z.B.:
  4874.             Die Datei sh.c ist da
  4875.             Die Datei cmds.c ist da
  4876.             Die Datei cmds2.c ist da
  4877.         usw.
  4878.     find e:\ *.dup | xargs rm -f
  4879.         Löscht alle *.dup-Dateien auf Laufwerk E: ohne Berücksichti-
  4880.         gung von Readonly-Dateien (rm -f).
  4881.     cmds | xargs echo {}"^t"^c
  4882.         Gibt die Namen aller interner Kommandos in mehreren Spalten
  4883.         auf dem Bildschirm aus. (Das geht einfacher mit "cmds -C")
  4884.  
  4885. -----
  4886. ==============================================================================
  4887.  
  4888. 2) Externe Kommandos:
  4889.  
  4890. Wenn beim Shell-Prompt ein Kommando eingegeben wird, das keinem internen
  4891. Kommando entspricht, wird eine Datei mit dem entsprechenden Namen unter
  4892. allen in der Shell-Variablen PATH enthaltenen Pfaden gesucht. Wenn dort
  4893. eine Datei mit dem angegebenen Namen und einem der in $XEXT angegebenen
  4894. Extendern existiert, wird sie als Binärdatei aufgerufen. Wenn dort eine
  4895. Datei mit dem angegebenen Namen und einem der in $SEXT angegebenen Exten-
  4896. dern existiert, wird sie als Shellscript ausgeführt.
  4897.  
  4898. Beispiel: Es sei
  4899.     PATH=.,d:\bin
  4900.     XEXT=.prg,.tos
  4901.     SEXT=.sh
  4902.  
  4903. Nach Eingabe des Kommandos "test" werden die folgenden Dateien gesucht, die
  4904. erste gefundene Datei wird ausgeführt:
  4905.  
  4906.     test.prg
  4907.     test.tos
  4908.     test.sh
  4909.     d:\bin\test.prg
  4910.     d:\bin\test.tos
  4911.     d:\bin\test.sh
  4912.  
  4913. Die Dateien, die auf .prg oder .tos enden, werden als Binärdateien aufge-
  4914. rufen.
  4915. Die Dateien, die auf .sh enden, werden als Shellscripts ausgeführt.
  4916. Wenn mehrere der angeführten Dateien existieren, wird die nur erste
  4917. gefundene Datei ausgeführt.
  4918. Durch Eingabe von "type test" kann festgestellt werden, welche Datei
  4919. durch das Kommando test ausgeführt würde oder ob es sich um ein internes
  4920. Kommando handelt.
  4921.  
  4922. In der Shell-Variablen GEXT werden analog zu XEXT und SEXT Extender gespei-
  4923. chert, die angeben, welche Dateinen als GEM-Programme gestartet werden.
  4924. GEM-Programme werden über die Shellfunktion gemexec gestartet. Diese Funktion
  4925. kann vom Anwender frei verändert werden und darüber entscheiden, welche Aktio-
  4926. nen sie vor und nach dem Start des Programms ausführt oder ob sie es überhaupt
  4927. startet. Siehe hierzu auch den Abschnitt zu gemexec unter den internen Komman-
  4928. dos.
  4929.  
  4930. GEXT hat Wirkung auf alle Binärprogramme, also auf solche, die über die
  4931. Eingabe ihres Namens und mit XEXT gestartet werden, als auch auf solche,
  4932. die mit dem exec-Kommando aufgerufen werden. GEXT ist ohne Wirkung für
  4933. Shell-Scripts, auch wenn einer der Extender in GEXT mit einem der Extender
  4934. in SEXT übereinstimmt.
  4935.  
  4936. Folgende Werte sind nach Start der Shell voreingestellt:
  4937.     PATH=.,..,$HOME,$HOME\bin
  4938.     XEXT=.prg,.tos,.ttp,.app
  4939.     SEXT=.sh
  4940.     GEXT=.prg
  4941. Die Variablen können in der Datei profile verändert oder erweitert werden.
  4942.  
  4943. Außerdem ist es möglich, den vollen Pfadnamen zum Aufruf anzugeben. Dabei
  4944. muß jedoch auch der Extender mit angegeben werden. Das Kommando wird nur
  4945. ausgeführt, wenn der Extender einem der in $XEXT oder $SEXT angeführten
  4946. entspricht. (Dies entspricht dem Datei-Attribut "Executable" unter Unix.
  4947. In der Okami-Shell wird dieses Attribut durch die Shell-Variablen XEXT und
  4948. SEXT simuliert.)
  4949.  
  4950.  
  4951. Der Quellcode sämtlicher externer Kommandos gehört zum Lieferumfang.
  4952.  
  4953. Folgende externe Kommandos werden mitgeliefert:
  4954.  
  4955.  
  4956. -----
  4957. calc - Schnittstelle zum UPN-Rechner
  4958.  
  4959. Datei:    calc.sh
  4960. Syntax: calc
  4961.  
  4962. Dieses Shellscript dient dazu, das interne Kommando upn benutzerfreundlich
  4963. aufzurufen. Es erscheint das Prompt:
  4964.     upn >
  4965. Nun können beliebige upn-Ausdrücke eingegeben werden (siehe das interne
  4966. Kommando upn). Jeder Ausdruck wird mit ENTER abgeschlossen. Es können auch
  4967. unvollständige Ausdrücke angegeben werden, z.B. sind äquivalent:
  4968.  
  4969.     upn > 2 3 * 4 +
  4970.  
  4971. und
  4972.     upn > 2 3
  4973.     upn > *
  4974.     upn > 4 +
  4975.  
  4976. In der Eingabe kann die Zeichenkette "$_" (Dollar Underscore) benutzt wer-
  4977. den, um das Ergebnis der letzten Eingabezeile zu repräsentieren. Beispiel:
  4978.  
  4979.     upn > 17 4 +
  4980.     upn > pi 2 * sin $_ /
  4981.  
  4982. berechnet erst 17+4, das Ergebnis wird in der zweiten Zeile benutzt. Achtung:
  4983. in $_ wird immer nur der ganzzahlige Anteil gespeichert.
  4984.  
  4985. Durch Eingabe von clr wird der Stack gelöscht, durch Eingabe von list wird
  4986. der Inhalt des Stacks ausgegeben.
  4987.  
  4988. Das Programm wird beendet durch Eingabe von exit. Die Shellvariable "_"
  4989. (Underscore) enthält dann den ganzzahligen Anteil des letzten Ergebnisses.
  4990.  
  4991. Siehe auch:    upn
  4992.  
  4993. -----
  4994. format - Disketten formatieren
  4995.  
  4996. Datei:    format.ttp
  4997. Source: format.c
  4998. Syntax: format -V|[-s(SPT)] [-t(TPD)] [-1] [-i(Interleave)] [-v(Virgin)]
  4999.         [-n(VersNr)] [-(N|B|R] [-x] [-q] [-l(Diskname)][Drive]
  5000.  
  5001. Vor dem Formatieren erfolgt eine Sicherheitsabfrage. Nach Eingabe von y
  5002. wird formatiert, nach einer anderen Eingabe oder Druck auf ENTER wird das
  5003. Programm abgebrochen.
  5004. Ebenso erfolgt eine Sicherheitsabfrage bei eigenartigen Werten (z.B.
  5005. anderen Laufwerksnummern als A: und B: etc.)
  5006.  
  5007. Die Voreinstellungen der einzelnen Flags sind:
  5008.     format -s9 -t80 -i1 -v0xe5e5 -n0x1000001 A:
  5009.  
  5010.  
  5011. Flags:
  5012.     -V    Die Versionsnummer und das Kompilierungsdatum des Formatier-
  5013.         programms werden ausgegeben. Es wird nicht formatiert. Alle
  5014.         anderen Parameter sind ohne Wirkung.
  5015.     -s    Anzahl der Sektoren pro Track. Default: 9.
  5016.     -t    Anzahl der Tracks pro Seite. Default: 80.
  5017.     -1    Wenn angegeben, wird die Diskette einseitig formatiert.
  5018.         Wenn nicht angegeben, wird die Diskette zweiseitig
  5019.         formatiert. Default: zweiseitig.
  5020.     -i    Die Anzahl der physikalischen Sektoren zwischen zwei
  5021.         logischen Sektoren. Default: 1.
  5022.     -v    Der Wert, der in die formatierten Sektoren geschrieben
  5023.         wird. Normalerweise 0xe5e5. Unabhängig von dieser Ein-
  5024.         stellung werden die Spuren 0 und 1 immer mit Nullen ge-
  5025.         füllt.
  5026.     -n    Die Versionsnummer, die in den Bootsektor geschrieben
  5027.         wird. Werte größer als 0x1000000 ergeben eine zufällige
  5028.         Versionsnummer.
  5029.     -N    Es wird kein Bootsektor angelegt.
  5030.     -B    Es wird nicht formatiert (nur Bootsektor).
  5031.     -R    Es wird nur eine neue Versionsnummer im Bootsektor einge-
  5032.         tragen. Die Versionsnummer kann mit -n angegeben werden,
  5033.         Default ist eine zufällige Nummer. Nützlich, wenn man
  5034.         Disketten auf einem MSDOS-Rechner formatiert und mehrere
  5035.         Disketten dieselbe Seriennummer haben. Es wird nicht
  5036.         formatiert, d.h. der Inhalt der Diskette bleibt unangetastet.
  5037.     -x    Der Bootsektor wird ausführbar gemacht.
  5038.     -q    Es erfolgen keine Sicherheitsabfragen.
  5039.     -l    Es wird der angegebene Diskettenname (Volume-Label) erzeugt.
  5040.     Drive    Das zu formatierende Laufwerk. Es gilt nur der erste 
  5041.         Buchstabe, d.h. es sind äquivalent:
  5042.             format A:
  5043.             format a:
  5044.             format a
  5045.             format abcdefg
  5046.             format
  5047.         Default ist Laufwerk A:.
  5048.  
  5049.  
  5050. Beispiele:
  5051. 1) format
  5052.     Formatiert die Diskette in Laufwerk A: mit 2 Seiten, 80 Tracks pro
  5053.     Seite, 9 Sektoren pro Track mit Interleave 1 und Virgin 0xe5e5. Es
  5054.     wird ein nicht-ausführbarer Bootsektor angelegt. Es wird kein Dis-
  5055.     kettenname erzeugt
  5056.     => der Standardaufruf zum Formatieren von Disketten.
  5057. 2) format B: -ldisk1
  5058.     Formatiert die Diskette in Laufwerk B: mit den unter 1) beschrie-
  5059.     benen Standardwerten. Außerdem wird der Diskettenname "disk1" er-
  5060.     zeugt.
  5061. 3) format -s10 B:
  5062.     Formatiert die Diskette in Laufwerk B: mit 10 Sektoren pro Track.
  5063. 4) format -s10 -q B:
  5064.     Wie 3), aber ohne Sicherheitsabfrage.
  5065. 5) format -s10 -v0 -N
  5066.     Formatiert die Diskette in Laufwerk A: mit 10 Sektoren pro Track.
  5067.     Die Sektoren werden mit Nullen gefüllt. Es wird kein Bootsektor
  5068.     angelegt. Es erfolgt eine Sicherheitsabfrage wegen eines unge-
  5069.     wöhnlichen Virgin-Wertes (-v0).
  5070. 6) format -s10 -v0 -N -q
  5071.     Wie 5), aber ohne Sicherheitsabfrage.
  5072. 7) format -R
  5073.     Ändert die Seriennummer der Diskette in Laufwert A:.
  5074.  
  5075.  
  5076. Vorsicht:
  5077.     Die Parameter -i (Interleave) und -v (Virgin) sollten nur in
  5078.     Sonderfällen geändert werden. Der Interleave-Faktor muß mit der
  5079.     Anzahl der Sektoren pro Track teilerfremd sein (wird vom Pro-
  5080.     gramm nicht überprüft!!!!)
  5081.  
  5082.  
  5083. Laufzeit:
  5084.     format        (Standardwerte zweiseitig)
  5085.         dauert ca. 1 Minute 38 Sekunden
  5086.     format -1    (Standardwerte einseitig)
  5087.         dauert ca. 50 Sekunden
  5088.     format -B    (Anlegen eines Bootsektors ohne Formatierung)
  5089.         dauert ca. 2 Sekunden
  5090.     (Alle Zeiten incl. Ladezeit des format-Programms von Festplatte,
  5091.     beim Aufruf mit -q [ohne Sicherheitsabfrage]. Gemessen mit dem
  5092.     time-Kommando.)
  5093.  
  5094. -----
  5095. gem - Benutzung der Accessories
  5096.  
  5097. Dateien: gem.prg, gem.rsc
  5098. Source:  gem.c
  5099. Syntax:  gem
  5100.  
  5101. Es wird ein GEM-Desktop mit Menüzeile angezeigt. Von dieser Menüzeile aus
  5102. können die installierten Accessories benutzt werden. Außerdem enthält
  5103. die Menüzeile weitere Menüs, deren Einträge Shellkommandos sind. Durch
  5104. Anwählen werden diese Kommandos von der aufrufenden Shell (durch die
  5105. system()-Funktion über den _shell_p-Zeiger) ausgeführt.
  5106. Der Menübaum befindet sich in der Datei gem.rsc. Mit einem Resource
  5107. Construction Program können die Menüs verändert werden. Es können
  5108. beliebig viele weitere Menüs und Menüpunkte hinzugefügt oder alte ge-
  5109. löscht werden. Allerdings darf sich in der RSC-Datei nur ein Objektbaum
  5110. befinden.
  5111. gem wird durch anklicken eines Menüeintrages namens `exit' beendet. Dieser
  5112. Eintrag befindet sich normalerweise im Desk-Menü, darf sich aber auch in
  5113. einem der anderen Menüs befinden. Achtung: wenn es keinen Menüeintrag
  5114. namens `exit' gibt, kann gem nicht beendet werden. Aus diesem Grund sollte
  5115. das Desk-Menü unverändert bleiben.
  5116.  
  5117. -----
  5118. showpic - Screenformat-Bilder anzeigen
  5119.  
  5120. Datei: showpic.sh
  5121. Syntax: showpic
  5122.  
  5123. Dieses Shellscript ist ein Beispiel zur Programmierung der Shell. Es läßt
  5124. den Anwender eine Datei in einer Fileselect-Box auswählen und bestimmt
  5125. anhand des Dateinamen-Extenders, ob es sich um eine Doodle-Datei (.PIC,
  5126. Dateilänge 32000 Bytes) oder eine Degas-Datei (.PI3, 32066 Bytes) handelt,
  5127. und bestimmt entsprechend die Länge des Dateiheaders (Doodle 0, Degas 34
  5128. Bytes). Wenn der Extender weder .PIC noch .PI3 ist, muß der Anwender die
  5129. Länge des Headers eingeben.
  5130. Danach wird das Bild geladen und angezeigt. Nach einem Druck auf ENTER wird
  5131. der Bildschirm gelöscht, und das ganze beginnt von vorne, bis der Anwender
  5132. "Abbruch" anwählt.
  5133.  
  5134. Das Script demonstriert die vielfältigen Möglichkeiten der Shell-Pro-
  5135. grammierung mit Variablen, Pipes, Eingaben, Shellflags und dem if- und
  5136. while-Kommando.
  5137.  
  5138. ----------------------------------------------------------------------------
  5139. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  5140. An diese Stelle können weitere Erklärungen hinzugefügt werden, die bei Druck
  5141. auf Help nach einem Kommando erscheinen sollen,  z.B. Erklärungen zu eigenen
  5142. externen Kommandos oder Abschnitte aus okami.doc. Bitte das Format beachten:
  5143. - Zeile aus fünf Minuszeichen
  5144. - Zeile, die mit dem Stichwort beginnt
  5145. - Erklärung geht bis zur nächsten Zeile aus fünf Minuszeichen (exkl.)
  5146. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  5147.